home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 17 / CU Amiga Magazine's Super CD-ROM 17 (1997)(EMAP Images)(GB)[!][issue 1997-12].iso / CUCD / Programming / DiceSource / src / dd / fails1.c < prev    next >
C/C++ Source or Header  |  1997-09-09  |  113KB  |  3,778 lines

  1. /*
  2.  *    (c)Copyright 1992-1997 Obvious Implementations Corp.  Redistribution and
  3.  *    use is allowed under the terms of the DICE-LICENSE FILE,
  4.  *    DICE-LICENSE.TXT.
  5.  */
  6. # 1 "fails.c" 0
  7. typedef void           *APTR;
  8. typedef long        LONG;
  9. typedef unsigned long    ULONG;
  10. typedef unsigned long    LONGBITS;
  11. typedef short        WORD;
  12. typedef unsigned short    UWORD;
  13. typedef unsigned short    WORDBITS;
  14. typedef signed char    BYTE;
  15. typedef unsigned char    UBYTE;
  16. typedef unsigned char    BYTEBITS;
  17. typedef short        RPTR;
  18. typedef unsigned char  *STRPTR;
  19. typedef short        SHORT;
  20. typedef unsigned short    USHORT;
  21. typedef short        COUNT;
  22. typedef unsigned short    UCOUNT;
  23. typedef ULONG        CPTR;
  24. typedef float        FLOAT;
  25. typedef double        DOUBLE;
  26. typedef short        BOOL;
  27. typedef unsigned char    TEXT;
  28. struct Node {
  29.     struct  Node *ln_Succ;
  30.     struct  Node *ln_Pred;
  31.     UBYTE   ln_Type;
  32.     BYTE    ln_Pri;
  33.     char    *ln_Name;
  34. };
  35. struct MinNode {
  36.     struct MinNode *mln_Succ;
  37.     struct MinNode *mln_Pred;
  38. };
  39. struct List {
  40.    struct  Node *lh_Head;
  41.    struct  Node *lh_Tail;
  42.    struct  Node *lh_TailPred;
  43.    UBYTE   lh_Type;
  44.    UBYTE   l_pad;
  45. };
  46. struct MinList {
  47.    struct  MinNode *mlh_Head;
  48.    struct  MinNode *mlh_Tail;
  49.    struct  MinNode *mlh_TailPred;
  50. };
  51. struct Interrupt {
  52.     struct  Node is_Node;
  53.     APTR    is_Data;
  54.     void    (*is_Code)();
  55. };
  56. struct IntVector {
  57.     APTR    iv_Data;
  58.     void    (*iv_Code)();
  59.     struct  Node *iv_Node;
  60. };
  61. struct SoftIntList {
  62.     struct List sh_List;
  63.     UWORD  sh_Pad;
  64. };
  65. struct Library {
  66.     struct  Node lib_Node;
  67.     UBYTE   lib_Flags;
  68.     UBYTE   lib_pad;
  69.     UWORD   lib_NegSize;
  70.     UWORD   lib_PosSize;
  71.     UWORD   lib_Version;
  72.     UWORD   lib_Revision;
  73.     APTR    lib_IdString;
  74.     ULONG   lib_Sum;
  75.     UWORD   lib_OpenCnt;
  76. };
  77. struct Task {
  78.     struct  Node tc_Node;
  79.     UBYTE   tc_Flags;
  80.     UBYTE   tc_State;
  81.     BYTE    tc_IDNestCnt;
  82.     BYTE    tc_TDNestCnt;
  83.     ULONG   tc_SigAlloc;
  84.     ULONG   tc_SigWait;
  85.     ULONG   tc_SigRecvd;
  86.     ULONG   tc_SigExcept;
  87.     UWORD   tc_TrapAlloc;
  88.     UWORD   tc_TrapAble;
  89.     APTR    tc_ExceptData;
  90.     APTR    tc_ExceptCode;
  91.     APTR    tc_TrapData;
  92.     APTR    tc_TrapCode;
  93.     APTR    tc_SPReg;
  94.     APTR    tc_SPLower;
  95.     APTR    tc_SPUpper;
  96.     void    (*tc_Switch)();
  97.     void    (*tc_Launch)();
  98.     struct  List tc_MemEntry;
  99.     APTR    tc_UserData;
  100. };
  101. struct ExecBase {
  102.     struct Library LibNode;
  103.     UWORD    SoftVer;
  104.     WORD    LowMemChkSum;
  105.     ULONG    ChkBase;
  106.     APTR    ColdCapture;
  107.     APTR    CoolCapture;
  108.     APTR    WarmCapture;
  109.     APTR    SysStkUpper;
  110.     APTR    SysStkLower;
  111.     ULONG    MaxLocMem;
  112.     APTR    DebugEntry;
  113.     APTR    DebugData;
  114.     APTR    AlertData;
  115.     APTR    MaxExtMem;
  116.     UWORD    ChkSum;
  117.     struct    IntVector IntVects[16];
  118.     struct    Task *ThisTask;
  119.     ULONG    IdleCount;
  120.     ULONG    DispCount;
  121.     UWORD    Quantum;
  122.     UWORD    Elapsed;
  123.     UWORD    SysFlags;
  124.     BYTE    IDNestCnt;
  125.     BYTE    TDNestCnt;
  126.     UWORD    AttnFlags;
  127.     UWORD    AttnResched;
  128.     APTR    ResModules;
  129.     APTR    TaskTrapCode;
  130.     APTR    TaskExceptCode;
  131.     APTR    TaskExitCode;
  132.     ULONG    TaskSigAlloc;
  133.     UWORD    TaskTrapAlloc;
  134.     struct    List MemList;
  135.     struct    List ResourceList;
  136.     struct    List DeviceList;
  137.     struct    List IntrList;
  138.     struct    List LibList;
  139.     struct    List PortList;
  140.     struct    List TaskReady;
  141.     struct    List TaskWait;
  142.     struct    SoftIntList SoftInts[5];
  143.     LONG    LastAlert[4];
  144.     UBYTE    VBlankFrequency;
  145.     UBYTE    PowerSupplyFrequency;
  146.     struct    List SemaphoreList;
  147.     APTR    KickMemPtr;
  148.     APTR    KickTagPtr;
  149.     APTR    KickCheckSum;
  150.     UWORD    ex_Pad0;
  151.     ULONG    ex_Reserved0;
  152.     APTR    ex_RamLibPrivate;
  153.     ULONG    ex_EClockFrequency;
  154.     ULONG    ex_CacheControl;
  155.     ULONG    ex_TaskID;
  156.     ULONG    ex_PuddleSize;
  157.     ULONG    ex_PoolThreshold;
  158.     struct    MinList ex_PublicPool;
  159.     APTR    ex_MMULock;
  160.     UBYTE    ex_Reserved[12];
  161. };
  162. struct MsgPort {
  163.     struct  Node mp_Node;
  164.     UBYTE   mp_Flags;
  165.     UBYTE   mp_SigBit;
  166.     void   *mp_SigTask;
  167.     struct  List mp_MsgList;
  168. };
  169. struct Message {
  170.     struct  Node mn_Node;
  171.     struct  MsgPort *mn_ReplyPort;
  172.     UWORD   mn_Length;
  173. };
  174. struct    MemChunk {
  175.     struct  MemChunk *mc_Next;
  176.     ULONG   mc_Bytes;
  177. };
  178. struct    MemHeader {
  179.     struct  Node mh_Node;
  180.     UWORD   mh_Attributes;
  181.     struct  MemChunk *mh_First;
  182.     APTR    mh_Lower;
  183.     APTR    mh_Upper;
  184.     ULONG   mh_Free;
  185. };
  186. struct    MemEntry {
  187. union {
  188.     ULONG   meu_Reqs;
  189.     APTR    meu_Addr;
  190.     } me_Un;
  191.     ULONG   me_Length;
  192. };
  193. struct    MemList {
  194.     struct  Node ml_Node;
  195.     UWORD   ml_NumEntries;
  196.     struct  MemEntry ml_ME[1];
  197. };
  198. typedef ULONG    Tag;
  199. struct TagItem    {
  200.     Tag        ti_Tag;
  201.     ULONG    ti_Data;
  202. };
  203. struct Custom {
  204.     UWORD   bltddat;
  205.     UWORD   dmaconr;
  206.     UWORD   vposr;
  207.     UWORD   vhposr;
  208.     UWORD   dskdatr;
  209.     UWORD   joy0dat;
  210.     UWORD   joy1dat;
  211.     UWORD   clxdat;
  212.     UWORD   adkconr;
  213.     UWORD   pot0dat;
  214.     UWORD   pot1dat;
  215.     UWORD   potinp;
  216.     UWORD   serdatr;
  217.     UWORD   dskbytr;
  218.     UWORD   intenar;
  219.     UWORD   intreqr;
  220.     APTR    dskpt;
  221.     UWORD   dsklen;
  222.     UWORD   dskdat;
  223.     UWORD   refptr;
  224.     UWORD   vposw;
  225.     UWORD   vhposw;
  226.     UWORD   copcon;
  227.     UWORD   serdat;
  228.     UWORD   serper;
  229.     UWORD   potgo;
  230.     UWORD   joytest;
  231.     UWORD   strequ;
  232.     UWORD   strvbl;
  233.     UWORD   strhor;
  234.     UWORD   strlong;
  235.     UWORD   bltcon0;
  236.     UWORD   bltcon1;
  237.     UWORD   bltafwm;
  238.     UWORD   bltalwm;
  239.     APTR    bltcpt;
  240.     APTR    bltbpt;
  241.     APTR    bltapt;
  242.     APTR    bltdpt;
  243.     UWORD   bltsize;
  244.     UBYTE   pad2d;
  245.     UBYTE   bltcon0l;
  246.     UWORD   bltsizv;
  247.     UWORD   bltsizh;
  248.     UWORD   bltcmod;
  249.     UWORD   bltbmod;
  250.     UWORD   bltamod;
  251.     UWORD   bltdmod;
  252.     UWORD   pad34[4];
  253.     UWORD   bltcdat;
  254.     UWORD   bltbdat;
  255.     UWORD   bltadat;
  256.     UWORD   pad3b[3];
  257.     UWORD deniseid;
  258.     UWORD   dsksync;
  259.     ULONG   cop1lc;
  260.     ULONG   cop2lc;
  261.     UWORD   copjmp1;
  262.     UWORD   copjmp2;
  263.     UWORD   copins;
  264.     UWORD   diwstrt;
  265.     UWORD   diwstop;
  266.     UWORD   ddfstrt;
  267.     UWORD   ddfstop;
  268.     UWORD   dmacon;
  269.     UWORD   clxcon;
  270.     UWORD   intena;
  271.     UWORD   intreq;
  272.     UWORD   adkcon;
  273.     struct  AudChannel {
  274.       UWORD *ac_ptr;
  275.       UWORD ac_len;
  276.       UWORD ac_per;
  277.       UWORD ac_vol;
  278.       UWORD ac_dat;
  279.       UWORD ac_pad[2];
  280.     } aud[4];
  281.     APTR    bplpt[8];
  282.     UWORD   bplcon0;
  283.     UWORD   bplcon1;
  284.     UWORD   bplcon2;
  285.     UWORD   bplcon3;
  286.     UWORD   bpl1mod;
  287.     UWORD   bpl2mod;
  288.     UWORD   bplhmod;
  289.     UWORD   pad86[1];
  290.     UWORD   bpldat[8];
  291.     APTR    sprpt[8];
  292.     struct  SpriteDef {
  293.       UWORD pos;
  294.       UWORD ctl;
  295.       UWORD dataa;
  296.       UWORD datab;
  297.     } spr[8];
  298.     UWORD   color[32];
  299.     UWORD htotal;
  300.     UWORD hsstop;
  301.     UWORD hbstrt;
  302.     UWORD hbstop;
  303.     UWORD vtotal;
  304.     UWORD vsstop;
  305.     UWORD vbstrt;
  306.     UWORD vbstop;
  307.     UWORD sprhstrt;
  308.     UWORD sprhstop;
  309.     UWORD bplhstrt;
  310.     UWORD bplhstop;
  311.     UWORD hhposw;
  312.     UWORD hhposr;
  313.     UWORD beamcon0;
  314.     UWORD hsstrt;
  315.     UWORD vsstrt;
  316.     UWORD hcenter;
  317.     UWORD   diwhigh;
  318. };
  319. struct Rectangle
  320. {
  321.     WORD   MinX,MinY;
  322.     WORD   MaxX,MaxY;
  323. };
  324. struct Rect32
  325. {
  326.     LONG    MinX,MinY;
  327.     LONG    MaxX,MaxY;
  328. };
  329. typedef struct tPoint
  330. {
  331.     WORD x,y;
  332. } Point;
  333. typedef UBYTE *PLANEPTR;
  334. struct BitMap
  335. {
  336.     UWORD   BytesPerRow;
  337.     UWORD   Rows;
  338.     UBYTE   Flags;
  339.     UBYTE   Depth;
  340.     UWORD   pad;
  341.     PLANEPTR Planes[8];
  342. };
  343. struct SemaphoreRequest {
  344.     struct  MinNode sr_Link;
  345.     struct  Task *sr_Waiter;
  346. };
  347. struct SignalSemaphore {
  348.     struct  Node ss_Link;
  349.     WORD    ss_NestCount;
  350.     struct  MinList ss_WaitQueue;
  351.     struct  SemaphoreRequest ss_MultipleLink;
  352.     struct  Task *ss_Owner;
  353.     WORD    ss_QueueCount;
  354. };
  355. struct Semaphore {
  356.     struct MsgPort sm_MsgPort;
  357.     WORD   sm_Bids;
  358. };
  359. struct Hook    {
  360.     struct MinNode    h_MinNode;
  361.     ULONG        (*h_Entry)();
  362.     ULONG        (*h_SubEntry)();
  363.     void        *h_Data;
  364. };
  365. struct Layer
  366. {
  367.     struct  Layer *front,*back;
  368.     struct  ClipRect    *ClipRect;
  369.     struct  RastPort    *rp;
  370.     struct  Rectangle    bounds;
  371.     UBYTE   reserved[4];
  372.     UWORD   priority;
  373.     UWORD   Flags;
  374.     struct  BitMap *SuperBitMap;
  375.     struct  ClipRect *SuperClipRect;
  376.     APTR    Window;
  377.     WORD   Scroll_X,Scroll_Y;
  378.     struct  ClipRect *cr,*cr2,*crnew;
  379.     struct  ClipRect *SuperSaveClipRects;
  380.     struct  ClipRect *_cliprects;
  381.     struct  Layer_Info    *LayerInfo;
  382.     struct  SignalSemaphore Lock;
  383.     struct  Hook *BackFill;
  384.     ULONG   reserved1;
  385.     struct  Region *ClipRegion;
  386.     struct  Region *saveClipRects;
  387.     WORD    Width,Height;
  388.     UBYTE   reserved2[18];
  389.     struct  Region  *DamageList;
  390. };
  391. struct ClipRect
  392. {
  393.     struct  ClipRect *Next;
  394.     struct  ClipRect *prev;
  395.     struct  Layer   *lobs;
  396.     struct  BitMap  *BitMap;
  397.     struct  Rectangle    bounds;
  398.     struct  ClipRect *_p1,*_p2;
  399.     LONG    reserved;
  400. };
  401. struct CopIns
  402. {
  403.     WORD   OpCode;
  404.     union
  405.     {
  406.     struct CopList *nxtlist;
  407.     struct
  408.     {
  409.    union
  410.    {
  411.    WORD   VWaitPos;
  412.    WORD   DestAddr;
  413.    } u1;
  414.    union
  415.    {
  416.    WORD   HWaitPos;
  417.    WORD   DestData;
  418.    } u2;
  419.     } u4;
  420.     } u3;
  421. };
  422. struct cprlist
  423. {
  424.     struct cprlist *Next;
  425.     UWORD   *start;
  426.     WORD   MaxCount;
  427. };
  428. struct CopList
  429. {
  430.     struct  CopList *Next;
  431.     struct  CopList *_CopList;
  432.     struct  ViewPort *_ViewPort;
  433.     struct  CopIns *CopIns;
  434.     struct  CopIns *CopPtr;
  435.     UWORD   *CopLStart;
  436.     UWORD   *CopSStart;
  437.     WORD   Count;
  438.     WORD   MaxCount;
  439.     WORD   DyOffset;
  440. };
  441. struct UCopList
  442. {
  443.     struct UCopList *Next;
  444.     struct CopList  *FirstCopList;
  445.     struct CopList  *CopList;
  446. };
  447. struct copinit
  448. {
  449.     UWORD vsync_hblank[2];
  450.     UWORD diwstart[4];
  451.     UWORD diagstrt[4];
  452.     UWORD sprstrtup[(2*8*2)];
  453.     UWORD wait14[2];
  454.     UWORD norm_hblank[2];
  455.     UWORD genloc[4];
  456.     UWORD jump[(2*2)];
  457.     UWORD wait_forever[2];
  458.     UWORD   sprstop[4];
  459. };
  460. struct    ExtendedNode    {
  461. struct    Node    *xln_Succ;
  462. struct    Node    *xln_Pred;
  463. UBYTE    xln_Type;
  464. BYTE    xln_Pri;
  465. char    *xln_Name;
  466. UBYTE    xln_Subsystem;
  467. UBYTE    xln_Subtype;
  468. LONG    xln_Library;
  469. LONG    (*xln_Init)();
  470. };
  471. struct    MonitorSpec
  472. {
  473.     struct    ExtendedNode    ms_Node;
  474.     UWORD    ms_Flags;
  475.     LONG    ratioh;
  476.     LONG    ratiov;
  477.     UWORD    total_rows;
  478.     UWORD    total_colorclocks;
  479.     UWORD    DeniseMaxDisplayColumn;
  480.     UWORD    BeamCon0;
  481.     UWORD    min_row;
  482.     struct    SpecialMonitor    *ms_Special;
  483.     UWORD    ms_OpenCount;
  484.     LONG    (*ms_transform)();
  485.     LONG    (*ms_translate)();
  486.     LONG    (*ms_scale)();
  487.     UWORD    ms_xoffset;
  488.     UWORD    ms_yoffset;
  489.     struct    Rectangle    ms_LegalView;
  490.     LONG    (*ms_maxoscan)();
  491.     LONG    (*ms_videoscan)();
  492.     UWORD    DeniseMinDisplayColumn;
  493.     ULONG    DisplayCompatible;
  494.     struct    List DisplayInfoDataBase;
  495.     struct    SignalSemaphore DisplayInfoDataBaseSemaphore;
  496.     ULONG    ms_reserved00;
  497.     ULONG    ms_reserved01;
  498. };
  499. struct    AnalogSignalInterval
  500. {
  501.     UWORD    asi_Start;
  502.     UWORD    asi_Stop;
  503. };
  504. struct    SpecialMonitor
  505. {
  506.     struct    ExtendedNode    spm_Node;
  507.     UWORD    spm_Flags;
  508.     int    (*do_monitor)();
  509.     int    (*reserved1)();
  510.     int    (*reserved2)();
  511.     int    (*reserved3)();
  512.     struct    AnalogSignalInterval    hblank;
  513.     struct    AnalogSignalInterval    vblank;
  514.     struct    AnalogSignalInterval    hsync;
  515.     struct    AnalogSignalInterval    vsync;
  516. };
  517. struct ViewPort
  518. {
  519.    struct   ViewPort *Next;
  520.    struct   ColorMap  *ColorMap;
  521.    struct   CopList  *DspIns;
  522.    struct   CopList  *SprIns;
  523.    struct   CopList  *ClrIns;
  524.    struct   UCopList *UCopIns;
  525.    WORD    DWidth,DHeight;
  526.    WORD    DxOffset,DyOffset;
  527.    UWORD    Modes;
  528.    UBYTE    SpritePriorities;
  529.    UBYTE    ExtendedModes;
  530.    struct   RasInfo *RasInfo;
  531. };
  532. struct View
  533. {
  534.    struct ViewPort *ViewPort;
  535.    struct cprlist *LOFCprList;
  536.    struct cprlist *SHFCprList;
  537.    WORD DyOffset,DxOffset;
  538.    UWORD   Modes;
  539. };
  540. struct ViewExtra
  541. {
  542.     struct ExtendedNode n;
  543.     struct View *View;
  544.     struct MonitorSpec *Monitor;
  545. };
  546. struct ViewPortExtra
  547. {
  548.     struct ExtendedNode n;
  549.     struct ViewPort *ViewPort;
  550.     struct Rectangle DisplayClip;
  551. };
  552. struct RasInfo
  553. {
  554.    struct   RasInfo *Next;
  555.    struct   BitMap *BitMap;
  556.    WORD    RxOffset,RyOffset;
  557. };
  558. struct ColorMap
  559. {
  560.     UBYTE    Flags;
  561.     UBYTE    Type;
  562.     UWORD    Count;
  563.     APTR    ColorTable;
  564.     struct    ViewPortExtra *cm_vpe;
  565.     UWORD    *TransparencyBits;
  566.     UBYTE    TransparencyPlane;
  567.     UBYTE    reserved1;
  568.     UWORD    reserved2;
  569.     struct    ViewPort *cm_vp;
  570.     APTR    NormalDisplayInfo;
  571.     APTR    CoerceDisplayInfo;
  572.     struct    TagItem *cm_batch_items;
  573.     ULONG    VPModeID;
  574. };
  575. struct AreaInfo
  576. {
  577.     WORD   *VctrTbl;
  578.     WORD   *VctrPtr;
  579.     BYTE    *FlagTbl;
  580.     BYTE    *FlagPtr;
  581.     WORD   Count;
  582.     WORD   MaxCount;
  583.     WORD   FirstX,FirstY;
  584. };
  585. struct TmpRas
  586. {
  587.     BYTE *RasPtr;
  588.     LONG Size;
  589. };
  590. struct GelsInfo
  591. {
  592.     BYTE sprRsrvd;
  593.     UBYTE Flags;
  594.     struct VSprite *gelHead, *gelTail;
  595.     WORD *nextLine;
  596.     WORD **lastColor;
  597.     struct collTable *collHandler;
  598.     WORD leftmost, rightmost, topmost, bottommost;
  599.    APTR firstBlissObj,lastBlissObj;
  600. };
  601. struct RastPort
  602. {
  603.     struct  Layer *Layer;
  604.     struct  BitMap   *BitMap;
  605.     UWORD  *AreaPtrn;
  606.     struct  TmpRas *TmpRas;
  607.     struct  AreaInfo *AreaInfo;
  608.     struct  GelsInfo *GelsInfo;
  609.     UBYTE   Mask;
  610.     BYTE    FgPen;
  611.     BYTE    BgPen;
  612.     BYTE    AOlPen;
  613.     BYTE    DrawMode;
  614.     BYTE    AreaPtSz;
  615.     BYTE    linpatcnt;
  616.     BYTE    dummy;
  617.     UWORD  Flags;
  618.     UWORD  LinePtrn;
  619.     WORD   cp_x, cp_y;
  620.     UBYTE   minterms[8];
  621.     WORD   PenWidth;
  622.     WORD   PenHeight;
  623.     struct  TextFont *Font;
  624.     UBYTE   AlgoStyle;
  625.     UBYTE   TxFlags;
  626.     UWORD   TxHeight;
  627.     UWORD   TxWidth;
  628.     UWORD   TxBaseline;
  629.     WORD    TxSpacing;
  630.     APTR    *RP_User;
  631.     ULONG   longreserved[2];
  632.     UWORD   wordreserved[7];
  633.     UBYTE   reserved[8];
  634. };
  635. struct Layer_Info
  636. {
  637.     struct Layer *top_layer;
  638.     struct Layer *check_lp;
  639.     struct ClipRect *obs;
  640.     struct MinList    FreeClipRects;
  641.     struct SignalSemaphore Lock;
  642.     struct List gs_Head;
  643.     LONG    longreserved;
  644.     UWORD    Flags;
  645.     BYTE    fatten_count;
  646.     BYTE    LockLayersCount;
  647.     UWORD  LayerInfo_extra_size;
  648.     WORD    *blitbuff;
  649.     void    *LayerInfo_extra;
  650. };
  651. struct TextAttr {
  652.     STRPTR  ta_Name;
  653.     UWORD   ta_YSize;
  654.     UBYTE   ta_Style;
  655.     UBYTE   ta_Flags;
  656. };
  657. struct TTextAttr {
  658.     STRPTR  tta_Name;
  659.     UWORD   tta_YSize;
  660.     UBYTE   tta_Style;
  661.     UBYTE   tta_Flags;
  662.     struct TagItem *tta_Tags;
  663. };
  664. struct TextFont {
  665.     struct Message tf_Message;
  666.     UWORD   tf_YSize;
  667.     UBYTE   tf_Style;
  668.     UBYTE   tf_Flags;
  669.     UWORD   tf_XSize;
  670.     UWORD   tf_Baseline;
  671.     UWORD   tf_BoldSmear;
  672.     UWORD   tf_Accessors;
  673.     UBYTE   tf_LoChar;
  674.     UBYTE   tf_HiChar;
  675.     APTR    tf_CharData;
  676.     UWORD   tf_Modulo;
  677.     APTR    tf_CharLoc;
  678.     APTR    tf_CharSpace;
  679.     APTR    tf_CharKern;
  680. };
  681. struct TextFontExtension {
  682.     UWORD   tfe_MatchWord;
  683.     UBYTE   tfe_Flags0;
  684.     UBYTE   tfe_Flags1;
  685.     struct TextFont *tfe_BackPtr;
  686.     struct MsgPort *tfe_OrigReplyPort;
  687.     struct TagItem *tfe_Tags;
  688.     UWORD  *tfe_OFontPatchS;
  689.     UWORD  *tfe_OFontPatchK;
  690. };
  691. struct ColorFontColors {
  692.     UWORD   cfc_Reserved;
  693.     UWORD   cfc_Count;
  694.     UWORD  *cfc_ColorTable;
  695. };
  696. struct ColorTextFont {
  697.     struct TextFont ctf_TF;
  698.     UWORD   ctf_Flags;
  699.     UBYTE   ctf_Depth;
  700.     UBYTE   ctf_FgColor;
  701.     UBYTE   ctf_Low;
  702.     UBYTE   ctf_High;
  703.     UBYTE   ctf_PlanePick;
  704.     UBYTE   ctf_PlaneOnOff;
  705.     struct ColorFontColors *ctf_ColorFontColors;
  706.     APTR    ctf_CharData[8];
  707. };
  708. struct TextExtent {
  709.     UWORD   te_Width;
  710.     UWORD   te_Height;
  711.     struct Rectangle te_Extent;
  712. };
  713. struct IORequest {
  714.     struct  Message io_Message;
  715.     struct  Device  *io_Device;
  716.     struct  Unit    *io_Unit;
  717.     UWORD   io_Command;
  718.     UBYTE   io_Flags;
  719.     BYTE    io_Error;
  720. };
  721. struct IOStdReq {
  722.     struct  Message io_Message;
  723.     struct  Device  *io_Device;
  724.     struct  Unit    *io_Unit;
  725.     UWORD   io_Command;
  726.     UBYTE   io_Flags;
  727.     BYTE    io_Error;
  728.     ULONG   io_Actual;
  729.     ULONG   io_Length;
  730.     APTR    io_Data;
  731.     ULONG   io_Offset;
  732. };
  733. struct timeval {
  734.     ULONG tv_secs;
  735.     ULONG tv_micro;
  736. };
  737. struct EClockVal {
  738.     ULONG ev_hi;
  739.     ULONG ev_lo;
  740. };
  741. struct timerequest {
  742.     struct IORequest tr_node;
  743.     struct timeval tr_time;
  744. };
  745. struct IEPointerPixel    {
  746.     struct Screen    *iepp_Screen;
  747.     struct {
  748.     WORD    X;
  749.     WORD    Y;
  750.     }            iepp_Position;
  751. };
  752. struct IEPointerTablet    {
  753.     struct {
  754.     UWORD    X;
  755.     UWORD    Y;
  756.     }            iept_Range;
  757.     struct {
  758.     UWORD    X;
  759.     UWORD    Y;
  760.     }            iept_Value;
  761.     WORD        iept_Pressure;
  762. };
  763. struct InputEvent {
  764.     struct  InputEvent *ie_NextEvent;
  765.     UBYTE   ie_Class;
  766.     UBYTE   ie_SubClass;
  767.     UWORD   ie_Code;
  768.     UWORD   ie_Qualifier;
  769.     union {
  770.     struct {
  771.         WORD    ie_x;
  772.         WORD    ie_y;
  773.     } ie_xy;
  774.     APTR    ie_addr;
  775.     struct {
  776.         UBYTE   ie_prev1DownCode;
  777.         UBYTE   ie_prev1DownQual;
  778.         UBYTE   ie_prev2DownCode;
  779.         UBYTE   ie_prev2DownQual;
  780.     } ie_dead;
  781.     } ie_position;
  782.     struct timeval ie_TimeStamp;
  783. };
  784. struct Menu
  785. {
  786.     struct Menu *NextMenu;
  787.     WORD LeftEdge, TopEdge;
  788.     WORD Width, Height;
  789.     UWORD Flags;
  790.     BYTE *MenuName;
  791.     struct MenuItem *FirstItem;
  792.     WORD JazzX, JazzY, BeatX, BeatY;
  793. };
  794. struct MenuItem
  795. {
  796.     struct MenuItem *NextItem;
  797.     WORD LeftEdge, TopEdge;
  798.     WORD Width, Height;
  799.     UWORD Flags;
  800.     LONG MutualExclude;
  801.     APTR ItemFill;
  802.     APTR SelectFill;
  803.     BYTE Command;
  804.     struct MenuItem *SubItem;
  805.     UWORD NextSelect;
  806. };
  807. struct Requester
  808. {
  809.     struct Requester *OlderRequest;
  810.     WORD LeftEdge, TopEdge;
  811.     WORD Width, Height;
  812.     WORD RelLeft, RelTop;
  813.     struct Gadget *ReqGadget;
  814.     struct Border *ReqBorder;
  815.     struct IntuiText *ReqText;
  816.     UWORD Flags;
  817.     UBYTE BackFill;
  818.     struct Layer *ReqLayer;
  819.     UBYTE ReqPad1[32];
  820.     struct BitMap *ImageBMap;
  821.     struct Window *RWindow;
  822.     struct Image  *ReqImage;
  823.     UBYTE ReqPad2[32];
  824. };
  825. struct Gadget
  826. {
  827.     struct Gadget *NextGadget;
  828.     WORD LeftEdge, TopEdge;
  829.     WORD Width, Height;
  830.     UWORD Flags;
  831.     UWORD Activation;
  832.     UWORD GadgetType;
  833.     APTR GadgetRender;
  834.     APTR SelectRender;
  835.     struct IntuiText *GadgetText;
  836.     LONG MutualExclude;
  837.     APTR SpecialInfo;
  838.     UWORD GadgetID;
  839.     APTR UserData;
  840. };
  841. struct BoolInfo
  842. {
  843.     UWORD  Flags;
  844.     UWORD  *Mask;
  845.     ULONG  Reserved;
  846. };
  847. struct PropInfo
  848. {
  849.     UWORD Flags;
  850.     UWORD HorizPot;
  851.     UWORD VertPot;
  852.     UWORD HorizBody;
  853.     UWORD VertBody;
  854.     UWORD CWidth;
  855.     UWORD CHeight;
  856.     UWORD HPotRes, VPotRes;
  857.     UWORD LeftBorder;
  858.     UWORD TopBorder;
  859. };
  860. struct StringInfo
  861. {
  862.     UBYTE *Buffer;
  863.     UBYTE *UndoBuffer;
  864.     WORD BufferPos;
  865.     WORD MaxChars;
  866.     WORD DispPos;
  867.     WORD UndoPos;
  868.     WORD NumChars;
  869.     WORD DispCount;
  870.     WORD CLeft, CTop;
  871.     struct StringExtend *Extension;
  872.     LONG LongInt;
  873.     struct KeyMap *AltKeyMap;
  874. };
  875. struct IntuiText
  876. {
  877.     UBYTE FrontPen, BackPen;
  878.     UBYTE DrawMode;
  879.     WORD LeftEdge;
  880.     WORD TopEdge;
  881.     struct TextAttr *ITextFont;
  882.     UBYTE *IText;
  883.     struct IntuiText *NextText;
  884. };
  885. struct Border
  886. {
  887.     WORD LeftEdge, TopEdge;
  888.     UBYTE FrontPen, BackPen;
  889.     UBYTE DrawMode;
  890.     BYTE Count;
  891.     WORD *XY;
  892.     struct Border *NextBorder;
  893. };
  894. struct Image
  895. {
  896.     WORD LeftEdge;
  897.     WORD TopEdge;
  898.     WORD Width;
  899.     WORD Height;
  900.     WORD Depth;
  901.     UWORD *ImageData;
  902.     UBYTE PlanePick, PlaneOnOff;
  903.     struct Image *NextImage;
  904. };
  905. struct IntuiMessage
  906. {
  907.     struct Message ExecMessage;
  908.     ULONG Class;
  909.     UWORD Code;
  910.     UWORD Qualifier;
  911.     APTR IAddress;
  912.     WORD MouseX, MouseY;
  913.     ULONG Seconds, Micros;
  914.     struct Window *IDCMPWindow;
  915.     struct IntuiMessage *SpecialLink;
  916. };
  917. struct IBox {
  918.     WORD Left;
  919.     WORD Top;
  920.     WORD Width;
  921.     WORD Height;
  922.     };
  923. struct Window
  924. {
  925.     struct Window *NextWindow;
  926.     WORD LeftEdge, TopEdge;
  927.     WORD Width, Height;
  928.     WORD MouseY, MouseX;
  929.     WORD MinWidth, MinHeight;
  930.     UWORD MaxWidth, MaxHeight;
  931.     ULONG Flags;
  932.     struct Menu *MenuStrip;
  933.     UBYTE *Title;
  934.     struct Requester *FirstRequest;
  935.     struct Requester *DMRequest;
  936.     WORD ReqCount;
  937.     struct Screen *WScreen;
  938.     struct RastPort *RPort;
  939.     BYTE BorderLeft, BorderTop, BorderRight, BorderBottom;
  940.     struct RastPort *BorderRPort;
  941.     struct Gadget *FirstGadget;
  942.     struct Window *Parent, *Descendant;
  943.     UWORD *Pointer;
  944.     BYTE PtrHeight;
  945.     BYTE PtrWidth;
  946.     BYTE XOffset, YOffset;
  947.     ULONG IDCMPFlags;
  948.     struct MsgPort *UserPort, *WindowPort;
  949.     struct IntuiMessage *MessageKey;
  950.     UBYTE DetailPen, BlockPen;
  951.     struct Image *CheckMark;
  952.     UBYTE *ScreenTitle;
  953.     WORD GZZMouseX;
  954.     WORD GZZMouseY;
  955.     WORD GZZWidth;
  956.     WORD GZZHeight;
  957.     UBYTE *ExtData;
  958.     BYTE *UserData;
  959.     struct Layer *WLayer;
  960.     struct TextFont *IFont;
  961.     ULONG    MoreFlags;
  962. };
  963. struct NewWindow
  964. {
  965.     WORD LeftEdge, TopEdge;
  966.     WORD Width, Height;
  967.     UBYTE DetailPen, BlockPen;
  968.     ULONG IDCMPFlags;
  969.     ULONG Flags;
  970.     struct Gadget *FirstGadget;
  971.     struct Image *CheckMark;
  972.     UBYTE *Title;
  973.     struct Screen *Screen;
  974.     struct BitMap *BitMap;
  975.     WORD MinWidth, MinHeight;
  976.     UWORD MaxWidth, MaxHeight;
  977.     UWORD Type;
  978. };
  979. struct ExtNewWindow
  980. {
  981.     WORD LeftEdge, TopEdge;
  982.     WORD Width, Height;
  983.     UBYTE DetailPen, BlockPen;
  984.     ULONG IDCMPFlags;
  985.     ULONG Flags;
  986.     struct Gadget *FirstGadget;
  987.     struct Image *CheckMark;
  988.     UBYTE *Title;
  989.     struct Screen *Screen;
  990.     struct BitMap *BitMap;
  991.     WORD MinWidth, MinHeight;
  992.     UWORD MaxWidth, MaxHeight;
  993.     UWORD Type;
  994.     struct TagItem    *Extension;
  995. };
  996. struct DrawInfo
  997. {
  998.     UWORD    dri_Version;
  999.     UWORD    dri_NumPens;
  1000.     UWORD    *dri_Pens;
  1001.     struct TextFont    *dri_Font;
  1002.     UWORD    dri_Depth;
  1003.     struct {
  1004.     UWORD    X;
  1005.     UWORD    Y;
  1006.     }        dri_Resolution;
  1007.     ULONG    dri_Flags;
  1008.     ULONG    dri_Reserved[7];
  1009. };
  1010. struct Screen
  1011. {
  1012.     struct Screen *NextScreen;
  1013.     struct Window *FirstWindow;
  1014.     WORD LeftEdge, TopEdge;
  1015.     WORD Width, Height;
  1016.     WORD MouseY, MouseX;
  1017.     UWORD Flags;
  1018.     UBYTE *Title;
  1019.     UBYTE *DefaultTitle;
  1020.     BYTE BarHeight, BarVBorder, BarHBorder, MenuVBorder, MenuHBorder;
  1021.     BYTE WBorTop, WBorLeft, WBorRight, WBorBottom;
  1022.     struct TextAttr *Font;
  1023.     struct ViewPort ViewPort;
  1024.     struct RastPort RastPort;
  1025.     struct BitMap BitMap;
  1026.     struct Layer_Info LayerInfo;
  1027.     struct Gadget *FirstGadget;
  1028.     UBYTE DetailPen, BlockPen;
  1029.     UWORD SaveColor0;
  1030.     struct Layer *BarLayer;
  1031.     UBYTE *ExtData;
  1032.     UBYTE *UserData;
  1033. };
  1034. struct NewScreen
  1035. {
  1036.     WORD LeftEdge, TopEdge, Width, Height, Depth;
  1037.     UBYTE DetailPen, BlockPen;
  1038.     UWORD ViewModes;
  1039.     UWORD Type;
  1040.     struct TextAttr *Font;
  1041.     UBYTE *DefaultTitle;
  1042.     struct Gadget *Gadgets;
  1043.     struct BitMap *CustomBitMap;
  1044. };
  1045. struct ExtNewScreen
  1046. {
  1047.     WORD LeftEdge, TopEdge, Width, Height, Depth;
  1048.     UBYTE DetailPen, BlockPen;
  1049.     UWORD ViewModes;
  1050.     UWORD Type;
  1051.     struct TextAttr *Font;
  1052.     UBYTE *DefaultTitle;
  1053.     struct Gadget *Gadgets;
  1054.     struct BitMap *CustomBitMap;
  1055.     struct TagItem    *Extension;
  1056. };
  1057. struct PubScreenNode    {
  1058.     struct Node        psn_Node;
  1059.     struct Screen    *psn_Screen;
  1060.     UWORD        psn_Flags;
  1061.     WORD        psn_Size;
  1062.     WORD        psn_VisitorCount;
  1063.     struct Task        *psn_SigTask;
  1064.     UBYTE        psn_SigBit;
  1065. };
  1066. struct Preferences
  1067. {
  1068.     BYTE FontHeight;
  1069.     UBYTE PrinterPort;
  1070.     UWORD BaudRate;
  1071.     struct timeval KeyRptSpeed;
  1072.     struct timeval KeyRptDelay;
  1073.     struct timeval DoubleClick;
  1074.     UWORD PointerMatrix[(1 + 16 + 1) * 2];
  1075.     BYTE XOffset;
  1076.     BYTE YOffset;
  1077.     UWORD color17;
  1078.     UWORD color18;
  1079.     UWORD color19;
  1080.     UWORD PointerTicks;
  1081.     UWORD color0;
  1082.     UWORD color1;
  1083.     UWORD color2;
  1084.     UWORD color3;
  1085.     BYTE ViewXOffset;
  1086.     BYTE ViewYOffset;
  1087.     WORD ViewInitX, ViewInitY;
  1088.     BOOL EnableCLI;
  1089.     UWORD PrinterType;
  1090.     UBYTE PrinterFilename[30];
  1091.     UWORD PrintPitch;
  1092.     UWORD PrintQuality;
  1093.     UWORD PrintSpacing;
  1094.     UWORD PrintLeftMargin;
  1095.     UWORD PrintRightMargin;
  1096.     UWORD PrintImage;
  1097.     UWORD PrintAspect;
  1098.     UWORD PrintShade;
  1099.     WORD PrintThreshold;
  1100.     UWORD PaperSize;
  1101.     UWORD PaperLength;
  1102.     UWORD PaperType;
  1103.     UBYTE   SerRWBits;
  1104.     UBYTE   SerStopBuf;
  1105.     UBYTE   SerParShk;
  1106.     UBYTE   LaceWB;
  1107.     UBYTE   WorkName[30];
  1108.     BYTE    RowSizeChange;
  1109.     BYTE    ColumnSizeChange;
  1110.     UWORD    PrintFlags;
  1111.     UWORD    PrintMaxWidth;
  1112.     UWORD    PrintMaxHeight;
  1113.     UBYTE    PrintDensity;
  1114.     UBYTE    PrintXOffset;
  1115.     UWORD    wb_Width;
  1116.     UWORD    wb_Height;
  1117.     UBYTE    wb_Depth;
  1118.     UBYTE    ext_size;
  1119. };
  1120. struct Remember
  1121. {
  1122.     struct Remember *NextRemember;
  1123.     ULONG RememberSize;
  1124.     UBYTE *Memory;
  1125. };
  1126. struct ColorSpec {
  1127.     WORD    ColorIndex;
  1128.     UWORD    Red;
  1129.     UWORD    Green;
  1130.     UWORD    Blue;
  1131. };
  1132. struct EasyStruct {
  1133.     ULONG    es_StructSize;
  1134.     ULONG    es_Flags;
  1135.     UBYTE    *es_Title;
  1136.     UBYTE    *es_TextFormat;
  1137.     UBYTE    *es_GadgetFormat;
  1138. };
  1139. struct IntuitionBase
  1140. {
  1141.     struct Library LibNode;
  1142.     struct View ViewLord;
  1143.     struct Window *ActiveWindow;
  1144.     struct Screen *ActiveScreen;
  1145.     struct Screen *FirstScreen;
  1146.     ULONG Flags;
  1147.     WORD    MouseY, MouseX;
  1148.     ULONG Seconds;
  1149.     ULONG Micros;
  1150. };
  1151. struct gpHitTest {
  1152.     ULONG        MethodID;
  1153.     struct GadgetInfo    *gpht_GInfo;
  1154.     struct {
  1155.     WORD    X;
  1156.     WORD    Y;
  1157.     }            gpht_Mouse;
  1158. };
  1159. struct gpRender {
  1160.     ULONG        MethodID;
  1161.     struct GadgetInfo    *gpr_GInfo;
  1162.     struct RastPort    *gpr_RPort;
  1163.     LONG        gpr_Redraw;
  1164. };
  1165. struct gpInput {
  1166.     ULONG        MethodID;
  1167.     struct GadgetInfo    *gpi_GInfo;
  1168.     struct InputEvent    *gpi_IEvent;
  1169.     LONG        *gpi_Termination;
  1170.     struct {
  1171.     WORD    X;
  1172.     WORD    Y;
  1173.     }            gpi_Mouse;
  1174. };
  1175. struct gpGoInactive {
  1176.     ULONG        MethodID;
  1177.     struct GadgetInfo    *gpgi_GInfo;
  1178.     ULONG        gpgi_Abort;
  1179. };
  1180. struct NewGadget
  1181.     {
  1182.     WORD ng_LeftEdge, ng_TopEdge;
  1183.     WORD ng_Width, ng_Height;
  1184.     UBYTE *ng_GadgetText;
  1185.     struct TextAttr *ng_TextAttr;
  1186.     UWORD ng_GadgetID;
  1187.     ULONG ng_Flags;
  1188.     APTR ng_VisualInfo;
  1189.     APTR ng_UserData;
  1190.     };
  1191. struct NewMenu
  1192.     {
  1193.     UBYTE nm_Type;
  1194.     STRPTR nm_Label;
  1195.     STRPTR nm_CommKey;
  1196.     UWORD nm_Flags;
  1197.     LONG nm_MutualExclude;
  1198.     APTR nm_UserData;
  1199.     };
  1200. struct GfxBase
  1201. {
  1202.     struct Library  LibNode;
  1203.     struct View *ActiView;
  1204.     struct copinit *copinit;
  1205.     long    *cia;
  1206.     long    *blitter;
  1207.     UWORD   *LOFlist;
  1208.     UWORD   *SHFlist;
  1209.     struct bltnode *blthd,*blttl;
  1210.     struct bltnode *bsblthd,*bsblttl;
  1211.     struct Interrupt vbsrv,timsrv,bltsrv;
  1212.     struct List     TextFonts;
  1213.     struct  TextFont *DefaultFont;
  1214.     UWORD  Modes;
  1215.     BYTE VBlank;
  1216.     BYTE Debug;
  1217.     WORD BeamSync;
  1218.     WORD system_bplcon0;
  1219.     UBYTE   SpriteReserved;
  1220.     UBYTE   bytereserved;
  1221.     UWORD   Flags;
  1222.     WORD   BlitLock;
  1223.     WORD    BlitNest;
  1224.     struct    List    BlitWaitQ;
  1225.     struct    Task    *BlitOwner;
  1226.     struct    List    TOF_WaitQ;
  1227.     UWORD    DisplayFlags;
  1228.     struct SimpleSprite **SimpleSprites;
  1229.     UWORD    MaxDisplayRow;
  1230.     UWORD    MaxDisplayColumn;
  1231.     UWORD    NormalDisplayRows;
  1232.     UWORD    NormalDisplayColumns;
  1233.     UWORD    NormalDPMX;
  1234.     UWORD    NormalDPMY;
  1235.     struct    SignalSemaphore *LastChanceMemory;
  1236.     UWORD    *LCMptr;
  1237.     UWORD    MicrosPerLine;
  1238.     UWORD    MinDisplayColumn;
  1239.     UBYTE    ChipRevBits0;
  1240.     UBYTE    crb_reserved[5];
  1241.     UWORD    monitor_id;
  1242.     ULONG    hedley[8];
  1243.     ULONG    hedley_sprites[8] ;
  1244.     ULONG    hedley_sprites1[8] ;
  1245.     WORD    hedley_count;
  1246.     UWORD    hedley_flags;
  1247.     WORD    hedley_tmp;
  1248.     LONG    *hash_table;
  1249.     UWORD    current_tot_rows;
  1250.     UWORD    current_tot_cclks;
  1251.     UBYTE    hedley_hint;
  1252.     UBYTE    hedley_hint2;
  1253.     ULONG    nreserved[4];
  1254.     LONG    *a2024_sync_raster;
  1255.     WORD   control_delta_pal;
  1256.     WORD   control_delta_ntsc;
  1257.     struct    MonitorSpec *current_monitor;
  1258.     struct    List MonitorList;
  1259.     struct    MonitorSpec *default_monitor;
  1260.     struct    SignalSemaphore *MonitorListSemaphore;
  1261.     void    *DisplayInfoDataBase;
  1262.     struct    SignalSemaphore *ActiViewCprSemaphore;
  1263.     ULONG    *UtilityBase;
  1264.     ULONG    *ExecBase;
  1265.     };
  1266. typedef APTR DisplayInfoHandle;
  1267. struct QueryHeader
  1268. {
  1269.     ULONG    StructID;
  1270.     ULONG    DisplayID;
  1271.     ULONG    SkipID;
  1272.     ULONG    Length;
  1273. };
  1274. struct DisplayInfo
  1275. {
  1276.     struct    QueryHeader Header;
  1277.     UWORD    NotAvailable;
  1278.     ULONG    PropertyFlags;
  1279.     Point    Resolution;
  1280.     UWORD    PixelSpeed;
  1281.     UWORD    NumStdSprites;
  1282.     UWORD    PaletteRange;
  1283.     Point    SpriteResolution;
  1284.     UBYTE    pad[4];
  1285.     ULONG    reserved[2];
  1286. };
  1287. struct DimensionInfo
  1288. {
  1289.     struct    QueryHeader Header;
  1290.     UWORD    MaxDepth;
  1291.     UWORD    MinRasterWidth;
  1292.     UWORD    MinRasterHeight;
  1293.     UWORD    MaxRasterWidth;
  1294.     UWORD    MaxRasterHeight;
  1295.     struct    Rectangle   Nominal;
  1296.     struct    Rectangle   MaxOScan;
  1297.     struct    Rectangle VideoOScan;
  1298.     struct    Rectangle   TxtOScan;
  1299.     struct    Rectangle   StdOScan;
  1300.     UBYTE    pad[14];
  1301.     ULONG    reserved[2];
  1302. };
  1303. struct MonitorInfo
  1304. {
  1305.     struct    QueryHeader Header;
  1306.     struct    MonitorSpec  *Mspc;
  1307.     Point    ViewPosition;
  1308.     Point    ViewResolution;
  1309.     struct    Rectangle ViewPositionRange;
  1310.     UWORD    TotalRows;
  1311.     UWORD    TotalColorClocks;
  1312.     UWORD    MinRow;
  1313.     WORD    Compatibility;
  1314.     UBYTE    pad[36];
  1315.     ULONG    reserved[2];
  1316. };
  1317. struct NameInfo
  1318. {
  1319.     struct    QueryHeader Header;
  1320.     UBYTE    Name[32];
  1321.     ULONG    reserved[2];
  1322. };
  1323. struct     KeyMap {
  1324.     UBYTE   *km_LoKeyMapTypes;
  1325.     ULONG   *km_LoKeyMap;
  1326.     UBYTE   *km_LoCapsable;
  1327.     UBYTE   *km_LoRepeatable;
  1328.     UBYTE   *km_HiKeyMapTypes;
  1329.     ULONG   *km_HiKeyMap;
  1330.     UBYTE   *km_HiCapsable;
  1331.     UBYTE   *km_HiRepeatable;
  1332. };
  1333. struct    KeyMapNode {
  1334.     struct Node kn_Node;
  1335.     struct KeyMap kn_KeyMap;
  1336. };
  1337. struct    KeyMapResource {
  1338.     struct Node kr_Node;
  1339.     struct List kr_List;
  1340. };
  1341. struct    ConUnit {
  1342.     struct  MsgPort cu_MP;
  1343.     struct  Window *cu_Window;
  1344.     WORD    cu_XCP;
  1345.     WORD    cu_YCP;
  1346.     WORD    cu_XMax;
  1347.     WORD    cu_YMax;
  1348.     WORD    cu_XRSize;
  1349.     WORD    cu_YRSize;
  1350.     WORD    cu_XROrigin;
  1351.     WORD    cu_YROrigin;
  1352.     WORD    cu_XRExtant;
  1353.     WORD    cu_YRExtant;
  1354.     WORD    cu_XMinShrink;
  1355.     WORD    cu_YMinShrink;
  1356.     WORD    cu_XCCP;
  1357.     WORD    cu_YCCP;
  1358.     struct  KeyMap cu_KeyMapStruct;
  1359.     UWORD   cu_TabStops[80];
  1360.     BYTE    cu_Mask;
  1361.     BYTE    cu_FgPen;
  1362.     BYTE    cu_BgPen;
  1363.     BYTE    cu_AOLPen;
  1364.     BYTE    cu_DrawMode;
  1365.     BYTE    cu_Obsolete1;
  1366.     APTR    cu_Obsolete2;
  1367.     UBYTE   cu_Minterms[8];
  1368.     struct  TextFont *cu_Font;
  1369.     UBYTE   cu_AlgoStyle;
  1370.     UBYTE   cu_TxFlags;
  1371.     UWORD   cu_TxHeight;
  1372.     UWORD   cu_TxWidth;
  1373.     UWORD   cu_TxBaseline;
  1374.     WORD    cu_TxSpacing;
  1375.     UBYTE   cu_Modes[(((20+1)+1)+7)/8];
  1376.     UBYTE   cu_RawEvents[(0x15+8)/8];
  1377. };
  1378.  struct  IOTArray {
  1379.     ULONG TermArray0;
  1380.     ULONG TermArray1;
  1381. };
  1382.  struct  IOExtSer {
  1383.     struct     IOStdReq IOSer;
  1384.    ULONG   io_CtlChar;
  1385.    ULONG   io_RBufLen;
  1386.    ULONG   io_ExtFlags;
  1387.    ULONG   io_Baud;
  1388.    ULONG   io_BrkTime;
  1389.    struct  IOTArray io_TermArray;
  1390.    UBYTE   io_ReadLen;
  1391.    UBYTE   io_WriteLen;
  1392.    UBYTE   io_StopBits;
  1393.    UBYTE   io_SerFlags;
  1394.    UWORD   io_Status;
  1395. };
  1396. struct DateStamp {
  1397.    LONG     ds_Days;
  1398.    LONG     ds_Minute;
  1399.    LONG     ds_Tick;
  1400. };
  1401. struct FileInfoBlock {
  1402.    LONG      fib_DiskKey;
  1403.    LONG      fib_DirEntryType;
  1404.    char      fib_FileName[108];
  1405.    LONG      fib_Protection;
  1406.    LONG      fib_EntryType;
  1407.    LONG      fib_Size;
  1408.    LONG      fib_NumBlocks;
  1409.    struct DateStamp fib_Date;
  1410.    char      fib_Comment[80];
  1411.    char      fib_Reserved[36];
  1412. };
  1413. typedef long  BPTR;
  1414. typedef long  BSTR;
  1415. struct InfoData {
  1416.    LONG      id_NumSoftErrors;
  1417.    LONG      id_UnitNumber;
  1418.    LONG      id_DiskState;
  1419.    LONG      id_NumBlocks;
  1420.    LONG      id_NumBlocksUsed;
  1421.    LONG      id_BytesPerBlock;
  1422.    LONG      id_DiskType;
  1423.    BPTR      id_VolumeNode;
  1424.    LONG      id_InUse;
  1425. };
  1426. struct Process {
  1427.     struct  Task    pr_Task;
  1428.     struct  MsgPort pr_MsgPort;
  1429.     WORD    pr_Pad;
  1430.     BPTR    pr_SegList;
  1431.     LONG    pr_StackSize;
  1432.     APTR    pr_GlobVec;
  1433.     LONG    pr_TaskNum;
  1434.     BPTR    pr_StackBase;
  1435.     LONG    pr_Result2;
  1436.     BPTR    pr_CurrentDir;
  1437.     BPTR    pr_CIS;
  1438.     BPTR    pr_COS;
  1439.     APTR    pr_ConsoleTask;
  1440.     APTR    pr_FileSystemTask;
  1441.     BPTR    pr_CLI;
  1442.     APTR    pr_ReturnAddr;
  1443.     APTR    pr_PktWait;
  1444.     APTR    pr_WindowPtr;
  1445.     BPTR    pr_HomeDir;
  1446.     LONG    pr_Flags;
  1447.     void    (*pr_ExitCode)();
  1448.     LONG    pr_ExitData;
  1449.     UBYTE   *pr_Arguments;
  1450.     struct MinList pr_LocalVars;
  1451.     ULONG   pr_ShellPrivate;
  1452.     BPTR    pr_CES;
  1453. };
  1454. struct FileHandle {
  1455.    struct Message *fh_Link;
  1456.    struct MsgPort *fh_Port;
  1457.    struct MsgPort *fh_Type;
  1458.    LONG fh_Buf;
  1459.    LONG fh_Pos;
  1460.    LONG fh_End;
  1461.    LONG fh_Funcs;
  1462.    LONG fh_Func2;
  1463.    LONG fh_Func3;
  1464.    LONG fh_Args;
  1465.    LONG fh_Arg2;
  1466. };
  1467. struct DosPacket {
  1468.    struct Message *dp_Link;
  1469.    struct MsgPort *dp_Port;
  1470.    LONG dp_Type;
  1471.    LONG dp_Res1;
  1472.    LONG dp_Res2;
  1473.    LONG dp_Arg1;
  1474.    LONG dp_Arg2;
  1475.    LONG dp_Arg3;
  1476.    LONG dp_Arg4;
  1477.    LONG dp_Arg5;
  1478.    LONG dp_Arg6;
  1479.    LONG dp_Arg7;
  1480. };
  1481. struct StandardPacket {
  1482.    struct Message   sp_Msg;
  1483.    struct DosPacket sp_Pkt;
  1484. };
  1485. struct ErrorString {
  1486.     LONG  *estr_Nums;
  1487.     UBYTE *estr_Strings;
  1488. };
  1489. struct DosLibrary {
  1490.     struct Library dl_lib;
  1491.     struct RootNode *dl_Root;
  1492.     APTR    dl_GV;
  1493.     LONG    dl_A2;
  1494.     LONG    dl_A5;
  1495.     LONG    dl_A6;
  1496.     struct ErrorString *dl_Errors;
  1497.     struct timerequest *dl_TimeReq;
  1498.     struct Library     *dl_UtilityBase;
  1499. };
  1500. struct RootNode {
  1501.     BPTR    rn_TaskArray;
  1502.     BPTR    rn_ConsoleSegment;
  1503.     struct  DateStamp rn_Time;
  1504.     LONG    rn_RestartSeg;
  1505.     BPTR    rn_Info;
  1506.     BPTR    rn_FileHandlerSegment;
  1507.     struct MinList rn_CliList;
  1508.     struct MsgPort *rn_BootProc;
  1509.     BPTR    rn_ShellSegment;
  1510.     LONG    rn_Flags;
  1511. };
  1512. struct CliProcList {
  1513.     struct MinNode cpl_Node;
  1514.     LONG cpl_First;
  1515.     struct MsgPort **cpl_Array;
  1516. };
  1517. struct DosInfo {
  1518.     BPTR    di_McName;
  1519.     BPTR    di_DevInfo;
  1520.     BPTR    di_Devices;
  1521.     BPTR    di_Handlers;
  1522.     APTR    di_NetHand;
  1523.     struct  SignalSemaphore di_DevLock;
  1524.     struct  SignalSemaphore di_EntryLock;
  1525.     struct  SignalSemaphore di_DeleteLock;
  1526. };
  1527. struct Segment {
  1528.     BPTR seg_Next;
  1529.     LONG seg_UC;
  1530.     BPTR seg_Seg;
  1531.     UBYTE seg_Name[4];
  1532. };
  1533. struct CommandLineInterface {
  1534.     LONG   cli_Result2;
  1535.     BSTR   cli_SetName;
  1536.     BPTR   cli_CommandDir;
  1537.     LONG   cli_ReturnCode;
  1538.     BSTR   cli_CommandName;
  1539.     LONG   cli_FailLevel;
  1540.     BSTR   cli_Prompt;
  1541.     BPTR   cli_StandardInput;
  1542.     BPTR   cli_CurrentInput;
  1543.     BSTR   cli_CommandFile;
  1544.     LONG   cli_Interactive;
  1545.     LONG   cli_Background;
  1546.     BPTR   cli_CurrentOutput;
  1547.     LONG   cli_DefaultStack;
  1548.     BPTR   cli_StandardOutput;
  1549.     BPTR   cli_Module;
  1550. };
  1551. struct DeviceList {
  1552.     BPTR        dl_Next;
  1553.     LONG        dl_Type;
  1554.     struct MsgPort *    dl_Task;
  1555.     BPTR        dl_Lock;
  1556.     struct DateStamp    dl_VolumeDate;
  1557.     BPTR        dl_LockList;
  1558.     LONG        dl_DiskType;
  1559.     LONG        dl_unused;
  1560.     BSTR        dl_Name;
  1561. };
  1562. struct          DevInfo {
  1563.     BPTR  dvi_Next;
  1564.     LONG  dvi_Type;
  1565.     APTR  dvi_Task;
  1566.     BPTR  dvi_Lock;
  1567.     BSTR  dvi_Handler;
  1568.     LONG  dvi_StackSize;
  1569.     LONG  dvi_Priority;
  1570.     LONG  dvi_Startup;
  1571.     BPTR  dvi_SegList;
  1572.     BPTR  dvi_GlobVec;
  1573.     BSTR  dvi_Name;
  1574. };
  1575. struct DosList {
  1576.     BPTR        dol_Next;
  1577.     LONG        dol_Type;
  1578.     struct MsgPort     *dol_Task;
  1579.     BPTR        dol_Lock;
  1580.     union {
  1581.     struct {
  1582.     BSTR    dol_Handler;
  1583.     LONG    dol_StackSize;
  1584.     LONG    dol_Priority;
  1585.     ULONG    dol_Startup;
  1586.     BPTR    dol_SegList;
  1587.     BPTR    dol_GlobVec;
  1588.     } dol_handler;
  1589.     struct {
  1590.     struct DateStamp    dol_VolumeDate;
  1591.     BPTR            dol_LockList;
  1592.     LONG            dol_DiskType;
  1593.     } dol_volume;
  1594.     struct {
  1595.     UBYTE    *dol_AssignName;
  1596.     struct AssignList *dol_List;
  1597.     } dol_assign;
  1598.     } dol_misc;
  1599.     BSTR        dol_Name;
  1600.     };
  1601. struct AssignList {
  1602.     struct AssignList *al_Next;
  1603.     BPTR           al_Lock;
  1604. };
  1605. struct DevProc {
  1606.     struct MsgPort *dvp_Port;
  1607.     BPTR        dvp_Lock;
  1608.     ULONG        dvp_Flags;
  1609.     struct DosList *dvp_DevNode;
  1610. };
  1611. struct FileLock {
  1612.     BPTR        fl_Link;
  1613.     LONG        fl_Key;
  1614.     LONG        fl_Access;
  1615.     struct MsgPort *    fl_Task;
  1616.     BPTR        fl_Volume;
  1617. };
  1618. struct DosEnvec {
  1619.     ULONG de_TableSize;
  1620.     ULONG de_SizeBlock;
  1621.     ULONG de_SecOrg;
  1622.     ULONG de_Surfaces;
  1623.     ULONG de_SectorPerBlock;
  1624.     ULONG de_BlocksPerTrack;
  1625.     ULONG de_Reserved;
  1626.     ULONG de_PreAlloc;
  1627.     ULONG de_Interleave;
  1628.     ULONG de_LowCyl;
  1629.     ULONG de_HighCyl;
  1630.     ULONG de_NumBuffers;
  1631.     ULONG de_BufMemType;
  1632.     ULONG de_MaxTransfer;
  1633.     ULONG de_Mask;
  1634.     LONG  de_BootPri;
  1635.     ULONG de_DosType;
  1636.     ULONG de_Baud;
  1637.     ULONG de_Control;
  1638.     ULONG de_BootBlocks;
  1639. };
  1640. struct FileSysStartupMsg {
  1641.     ULONG    fssm_Unit;
  1642.     BSTR    fssm_Device;
  1643.     BPTR    fssm_Environ;
  1644.     ULONG    fssm_Flags;
  1645. };
  1646. struct DeviceNode {
  1647.     BPTR    dn_Next;
  1648.     ULONG    dn_Type;
  1649.     struct MsgPort *dn_Task;
  1650.     BPTR    dn_Lock;
  1651.     BSTR    dn_Handler;
  1652.     ULONG    dn_StackSize;
  1653.     LONG    dn_Priority;
  1654.     BPTR    dn_Startup;
  1655.     BPTR    dn_SegList;
  1656.     BPTR    dn_GlobalVec;
  1657.     BSTR    dn_Name;
  1658. };
  1659. struct OldDrawerData {
  1660.     struct NewWindow    dd_NewWindow;
  1661.     LONG        dd_CurrentX;
  1662.     LONG        dd_CurrentY;
  1663. };
  1664. struct DrawerData {
  1665.     struct NewWindow    dd_NewWindow;
  1666.     LONG        dd_CurrentX;
  1667.     LONG        dd_CurrentY;
  1668.     ULONG        dd_Flags;
  1669.     UWORD        dd_ViewModes;
  1670. };
  1671. struct DiskObject {
  1672.     UWORD        do_Magic;
  1673.     UWORD        do_Version;
  1674.     struct Gadget    do_Gadget;
  1675.     UBYTE        do_Type;
  1676.     char *        do_DefaultTool;
  1677.     char **        do_ToolTypes;
  1678.     LONG        do_CurrentX;
  1679.     LONG        do_CurrentY;
  1680.     struct DrawerData *    do_DrawerData;
  1681.     char *        do_ToolWindow;
  1682.     LONG        do_StackSize;
  1683. };
  1684. struct FreeList {
  1685.     WORD        fl_NumFree;
  1686.     struct List        fl_MemList;
  1687. };
  1688. struct AppMessage {
  1689.     struct Message am_Message;
  1690.     UWORD am_Type;
  1691.     ULONG am_UserData;
  1692.     ULONG am_ID;
  1693.     LONG am_NumArgs;
  1694.     struct WBArg *am_ArgList;
  1695.     UWORD am_Version;
  1696.     UWORD am_Class;
  1697.     WORD am_MouseX;
  1698.     WORD am_MouseY;
  1699.     ULONG am_Seconds;
  1700.     ULONG am_Micros;
  1701.     ULONG am_Reserved[8];
  1702. };
  1703. struct    AppWindow    { void *aw_PRIVATE;  };
  1704. struct    AppIcon        { void *ai_PRIVATE;  };
  1705. struct        AppMenuItem    { void *ami_PRIVATE; };
  1706. typedef int ptrdiff_t;
  1707. typedef unsigned int size_t;
  1708. typedef char wchar_t;
  1709. typedef struct div_t {
  1710.     int     quot;
  1711.     int     rem;
  1712. } div_t;
  1713. typedef struct ldiv_t {
  1714.     long    quot;
  1715.     long    rem;
  1716. } ldiv_t;
  1717. extern void abort(void);
  1718. extern int atexit(void (*)(void));
  1719. extern double atof(const char *);
  1720. extern double strtod(const char *, char **);
  1721. extern int atoi(const char *);
  1722. extern long atol(const char *);
  1723. extern void *bsearch(const void *, const void *, size_t, size_t, int (*)(const void *, const void *));
  1724. extern void *calloc(size_t, size_t);
  1725. extern div_t div(int, int);
  1726. extern void exit(int);
  1727. extern void free(void *);
  1728. extern char *getenv(const char *);
  1729. extern int  setenv(const char *, const char *);
  1730. extern long labs(long);
  1731. extern ldiv_t ldiv(long, long);
  1732. extern void *malloc(size_t);
  1733. extern int mblen(const char *, size_t);
  1734. extern size_t mbstowcs(wchar_t *, const char *, size_t);
  1735. extern int mbtowc(wchar_t *, const char *, size_t);
  1736. extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *));
  1737. extern int rand(void);
  1738. extern void srand(unsigned int);
  1739. extern void *realloc(void *, size_t);
  1740. extern long strtol(const char *,char **, int);
  1741. extern unsigned long strtoul(const char *, char **, int);
  1742. extern int system(const char *);
  1743. extern int system13(const char *);
  1744. extern size_t wcstombs(wchar_t *, const char *, size_t);
  1745. extern int wctomb(char *, wchar_t);
  1746. extern int getfnl(const char *, char *, size_t, int);
  1747. extern int mkdir(const char *);
  1748. extern int expand_args(int, const char **, int *, char ***);
  1749. extern int (*onbreak(int (*)()))(void);
  1750. extern __stkargs void _exit(int);
  1751. extern void chkabort(void);
  1752. extern void stack_abort(void);
  1753. extern void sleep(int);
  1754. extern int _SystemBoolTag;
  1755. extern int _SystemBoolTagValue;
  1756. typedef void *va_list;
  1757. typedef long    fpos_t;
  1758. typedef struct FILE {
  1759.     struct FILE *sd_Next;
  1760.     struct FILE **sd_Prev;
  1761.     unsigned char   *sd_RBuf;
  1762.     unsigned char   *sd_RPtr;
  1763.     unsigned char   *sd_WBuf;
  1764.     unsigned char   *sd_WPtr;
  1765.     long    sd_BufSiz;
  1766.     int     sd_RLeft;
  1767.     int     sd_WLeft;
  1768.     int     sd_Flags;
  1769.     int     sd_Error;
  1770.     fpos_t  sd_Offset;
  1771.     int     sd_Fd;
  1772.     short   sd_UC;
  1773.     char    *sd_Name;
  1774. } FILE;
  1775. typedef struct _IOFDS {
  1776.     long    fd_Fh;
  1777.     long    fd_Flags;
  1778.     long    (*fd_Exec)(long, int, void *, void *);
  1779.     char    *fd_FileName;
  1780. } _IOFDS;
  1781. extern FILE _Iob[3];
  1782. extern FILE *_Iod;
  1783. extern _IOFDS _IoStaticFD[3];
  1784. extern _IOFDS *_IoFD;
  1785. extern short _IoFDLimit;
  1786. extern int _bufsiz;
  1787. extern void perror(const char *);
  1788. extern int    fclose(FILE *);
  1789. extern int    fflush(FILE *);
  1790. extern FILE * fopen(const char *, const char *);
  1791. extern FILE * freopen(const char *, const char *, FILE *);
  1792. extern void   setbuf(FILE *, char *);
  1793. extern int    setvbuf(FILE *, char *, int, size_t);
  1794. extern int    remove(const char *);
  1795. extern int    rename(const char *, const char *);
  1796. extern FILE * tmpfile(void);
  1797. extern char * tmpnam(char *);
  1798. extern int    fgetpos(FILE *, fpos_t *);
  1799. extern int    fseek(FILE *, long, int);
  1800. extern int    fsetpos(FILE *, const fpos_t *);
  1801. extern long   ftell(FILE *);
  1802. extern void   rewind(FILE *);
  1803. extern int    fgetc(FILE *);
  1804. extern char * fgets(char *, int, FILE *);
  1805. extern int    fputc(unsigned char, FILE *);
  1806. extern int    fputs(const char *, FILE *);
  1807. extern char * gets(char *);
  1808. extern int    puts(const char *);
  1809. extern int    ungetc(int, FILE *);
  1810. extern size_t fread(void *, size_t, size_t, FILE *);
  1811. extern size_t fwrite(const void *, size_t, size_t, FILE *);
  1812. extern int    fprintf(FILE *, const char *, ...);
  1813. extern int    fscanf(FILE *, const char *, ...);
  1814. extern int    printf(const char *, ...);
  1815. extern int    scanf(const char *, ...);
  1816. extern int    sprintf(char *, const char *, ...);
  1817. extern int    sscanf(char *, const char *, ...);
  1818. extern int    vfprintf(FILE *, const char *, va_list);
  1819. extern int    vprintf(const char *, va_list);
  1820. extern int    vsprintf(char *, const char *, va_list);
  1821. extern FILE * fdopen(int, const char *);
  1822. extern int    chdir(const char *);
  1823. extern char * getcwd(char *, int);
  1824. extern int    unlink(const char *);
  1825. extern int    fhprintf(long, const char *, ...);
  1826. extern int    vfhprintf(long, const char *, va_list);
  1827. extern int write(int, const void *, unsigned int);
  1828. extern int read(int, void *, unsigned int);
  1829. extern int close(int);
  1830. extern int open(const char *, int, ...);
  1831. extern int creat(const char *, int);
  1832. extern long lseek(int, long, int);
  1833. extern void *fdtofh(int);
  1834. extern _IOFDS *__getfh(int);
  1835. extern _IOFDS *_MakeFD(int *);
  1836. extern int fcntl(int, int, int);
  1837. extern int isatty(int);
  1838. extern int access(const char *, int);
  1839. extern int memcmp(const void *, const void *, size_t);
  1840. extern int strcmp(const char *, const char *);
  1841. extern int strcoll(const char *, const char *);
  1842. extern int strncmp(const char *, const char *, size_t);
  1843. extern size_t strxfrm(char *, const char *, size_t);
  1844. extern char *strcat(char *, const char *);
  1845. extern char *strncat(char *, const char *, size_t);
  1846. extern void *memcpy(void *, const void *, size_t);
  1847. extern void *memmove(void *, const void *, size_t);
  1848. extern char *strcpy(char *, const char *);
  1849. extern char *stpcpy(char *, const char *);
  1850. extern char *strncpy(char *, const char *, size_t);
  1851. extern void *memset(void *, int, size_t);
  1852. extern char *strerror(int);
  1853. extern size_t strlen(const char *);
  1854. extern void *memchr(const void *, int, size_t);
  1855. extern char *strchr(const char *, int);
  1856. extern size_t strcspn(const char *, const char *);
  1857. extern char *strpbrk(const char *, const char *);
  1858. extern char *strrchr(const char *, int);
  1859. extern size_t strspn(const char *, const char *);
  1860. extern char *strstr(const char *, const char *);
  1861. extern char *strtok(char *, const char *);
  1862. extern double strtod(const char *, char **);
  1863. extern long   strtol(const char *, char **, int);
  1864. extern unsigned long strtoul(const char *, char **, int);
  1865. extern void *movmem(const void *, const void *, size_t);
  1866. extern void *setmem(void *, size_t, int);
  1867. extern void *cmpmem(const void *, const void *, size_t);
  1868. extern void *clrmem(void *, size_t);
  1869. extern void *bzero(void *, size_t);
  1870. extern void *bcopy(const void *, void *, size_t);
  1871. extern void *bcmp(const void *, const void *, size_t);
  1872. extern char *strupper(char *);
  1873. extern int stricmp(const char *, const char *);
  1874. extern int strnicmp(const char *, const char *, int);
  1875. extern int strbpl(char **, int, const char *);
  1876. extern void strins(char *, const char *);
  1877. extern char *strdup(const char *);
  1878. extern char *stpbrk(const char *, const char *);
  1879. extern const char *stpchr(const char *, char);
  1880. long PlaceRexxCommand(struct MsgPort *, char *, char **, long *);
  1881. long PlaceRexxCommandDirect(struct MsgPort *, char *, char *, char **, long *);
  1882. void ProcessRexxCommands(struct MsgPort *);
  1883. short CreateGlobalDiceRexxPort(struct MsgPort *, char *);
  1884. short CreateDiceRexxPort(struct MsgPort *, char *);
  1885. void DeleteDiceRexxPort(struct MsgPort *);
  1886. int GetDiceRexxPortSlot(struct MsgPort *, char **);
  1887. extern struct Library *RexxSysBase;
  1888. long DoRexxCommand(void *rexxmsg, struct MsgPort *port, char *arg0, char **resstr);
  1889. extern char *RexxHostName;
  1890. extern short RexxSigBit;
  1891. long rega4(void);
  1892. void __closeall(void);
  1893. void _finitdesc(FILE *, int, int);
  1894. int _parseargs1(char *, int);
  1895. void _parseargs2(char *, char **, int);
  1896. long _SearchResident(char *);
  1897. long _SearchPath(char *);
  1898. __stkargs long _ExecSeg(long, char *, long, void *);
  1899. int exec_dcc(char *, char *);
  1900. int _pfmt(char *, va_list, unsigned int (*)(char *, size_t, size_t, void *), void *);
  1901. int _pfmtone(char, va_list *, unsigned int (*)(char *, size_t, size_t, void *), void *, short, short, short, int);
  1902. int _sfmt(unsigned char *, va_list, int (*)(void *), int (*)(int, void *), void *, int *);
  1903. int _sfmtone(char *, short *, void *, int (*)(void *), void *, short, short, short);
  1904. int __fclose(FILE *);
  1905. int _filbuf(FILE *);
  1906. void _MakeCacheFD(_IOFDS *, void *, long);
  1907. long _CacheFDIoctl(long, int, void *, void *);
  1908. short OpenConsole(const char *);
  1909. __stkargs _slow_bcopy(void *, void *, long);
  1910. __stkargs _slow_bzero(void *, long);
  1911. __stkargs _slow_bset(void *, long, int);
  1912. void _SetWildStack(long);
  1913. void *_ParseWild(const char *, short);
  1914. int _CompWild(const char *, void *, void *);
  1915. void _FreeWild(void *);
  1916. extern long _TimeCompensation;
  1917. extern int _DiceCacheEnable;
  1918. ULONG Supervisor( unsigned long (*userFunction)() );
  1919. void InitCode( unsigned long startClass, unsigned long version );
  1920. void InitStruct( APTR initTable, APTR memory, unsigned long size );
  1921. struct Library *MakeLibrary( APTR funcInit, APTR structInit,
  1922.     unsigned long (*libInit)(), unsigned long dataSize,
  1923.     unsigned long segList );
  1924. void MakeFunctions( APTR target, APTR functionArray,
  1925.     unsigned long funcDispBase );
  1926. struct Resident *FindResident( UBYTE *name );
  1927. void InitResident( struct Resident *resident, unsigned long segList );
  1928. void Alert( unsigned long alertNum );
  1929. void Debug( unsigned long flags );
  1930. void Disable( void );
  1931. void Enable( void );
  1932. void Forbid( void );
  1933. void Permit( void );
  1934. ULONG SetSR( unsigned long newSR, unsigned long mask );
  1935. APTR SuperState( void );
  1936. void UserState( APTR sysStack );
  1937. struct Interrupt *SetIntVector( long intNumber, struct Interrupt *interrupt );
  1938. void AddIntServer( long intNumber, struct Interrupt *interrupt );
  1939. void RemIntServer( long intNumber, struct Interrupt *interrupt );
  1940. void Cause( struct Interrupt *interrupt );
  1941. APTR Allocate( struct MemHeader *freeList, unsigned long byteSize );
  1942. void Deallocate( struct MemHeader *freeList, APTR memoryBlock,
  1943.     unsigned long byteSize );
  1944. APTR AllocMem( unsigned long byteSize, unsigned long requirements );
  1945. APTR AllocAbs( unsigned long byteSize, APTR location );
  1946. void FreeMem( APTR memoryBlock, unsigned long byteSize );
  1947. ULONG AvailMem( unsigned long requirements );
  1948. struct MemList *AllocEntry( struct MemList *entry );
  1949. void FreeEntry( struct MemList *entry );
  1950. void Insert( struct List *list, struct Node *node, struct Node *pred );
  1951. void AddHead( struct List *list, struct Node *node );
  1952. void AddTail( struct List *list, struct Node *node );
  1953. void Remove( struct Node *node );
  1954. struct Node *RemHead( struct List *list );
  1955. struct Node *RemTail( struct List *list );
  1956. void Enqueue( struct List *list, struct Node *node );
  1957. struct Node *FindName( struct List *list, UBYTE *name );
  1958. APTR AddTask( struct Task *task, APTR initPC, APTR finalPC );
  1959. void RemTask( struct Task *task );
  1960. struct Task *FindTask( UBYTE *name );
  1961. BYTE SetTaskPri( struct Task *task, long priority );
  1962. ULONG SetSignal( unsigned long newSignals, unsigned long signalSet );
  1963. ULONG SetExcept( unsigned long newSignals, unsigned long signalSet );
  1964. ULONG Wait( unsigned long signalSet );
  1965. void Signal( struct Task *task, unsigned long signalSet );
  1966. BYTE AllocSignal( long signalNum );
  1967. void FreeSignal( long signalNum );
  1968. LONG AllocTrap( long trapNum );
  1969. void FreeTrap( long trapNum );
  1970. void AddPort( struct MsgPort *port );
  1971. void RemPort( struct MsgPort *port );
  1972. void PutMsg( struct MsgPort *port, struct Message *message );
  1973. struct Message *GetMsg( struct MsgPort *port );
  1974. void ReplyMsg( struct Message *message );
  1975. struct Message *WaitPort( struct MsgPort *port );
  1976. struct MsgPort *FindPort( UBYTE *name );
  1977. void AddLibrary( struct Library *library );
  1978. void RemLibrary( struct Library *library );
  1979. struct Library *OldOpenLibrary( UBYTE *libName );
  1980. void CloseLibrary( struct Library *library );
  1981. APTR SetFunction( struct Library *library, long funcOffset,
  1982.     unsigned long (*newFunction)() );
  1983. void SumLibrary( struct Library *library );
  1984. void AddDevice( struct Device *device );
  1985. void RemDevice( struct Device *device );
  1986. BYTE OpenDevice( UBYTE *devName, unsigned long unit,
  1987.     struct IORequest *ioRequest, unsigned long flags );
  1988. void CloseDevice( struct IORequest *ioRequest );
  1989. BYTE DoIO( struct IORequest *ioRequest );
  1990. void SendIO( struct IORequest *ioRequest );
  1991. BOOL CheckIO( struct IORequest *ioRequest );
  1992. BYTE WaitIO( struct IORequest *ioRequest );
  1993. void AbortIO( struct IORequest *ioRequest );
  1994. void AddResource( APTR resource );
  1995. void RemResource( APTR resource );
  1996. APTR OpenResource( UBYTE *resName );
  1997. void RawDoFmt( UBYTE *formatString, APTR dataStream, void (*putChProc)(),
  1998.     APTR putChData );
  1999. ULONG GetCC( void );
  2000. ULONG TypeOfMem( APTR address );
  2001. ULONG Procure( struct Semaphore *semaport, struct Message *bidMsg );
  2002. void Vacate( struct Semaphore *semaport );
  2003. struct Library *OpenLibrary( UBYTE *libName, unsigned long version );
  2004. void InitSemaphore( struct SignalSemaphore *sigSem );
  2005. void ObtainSemaphore( struct SignalSemaphore *sigSem );
  2006. void ReleaseSemaphore( struct SignalSemaphore *sigSem );
  2007. ULONG AttemptSemaphore( struct SignalSemaphore *sigSem );
  2008. void ObtainSemaphoreList( struct List *sigSem );
  2009. void ReleaseSemaphoreList( struct List *sigSem );
  2010. struct SignalSemaphore *FindSemaphore( UBYTE *sigSem );
  2011. void AddSemaphore( struct SignalSemaphore *sigSem );
  2012. void RemSemaphore( struct SignalSemaphore *sigSem );
  2013. ULONG SumKickData( void );
  2014. ULONG AddMemList( unsigned long size, unsigned long attributes,
  2015.     unsigned long pri, APTR base, UBYTE *name );
  2016. void CopyMem( APTR source, APTR dest, unsigned long size );
  2017. void CopyMemQuick( APTR source, APTR dest, unsigned long size );
  2018. void CacheClearU( void );
  2019. void CacheClearE( APTR address, unsigned long length, unsigned long caches );
  2020. ULONG CacheControl( unsigned long cacheBits, unsigned long cacheMask );
  2021. APTR CreateIORequest( struct MsgPort *port, unsigned long size );
  2022. void DeleteIORequest( APTR iorequest );
  2023. struct MsgPort *CreateMsgPort( void );
  2024. void DeleteMsgPort( struct MsgPort *port );
  2025. void ObtainSemaphoreShared( struct SignalSemaphore *sigSem );
  2026. APTR AllocVec( unsigned long byteSize, unsigned long requirements );
  2027. void FreeVec( APTR memoryBlock );
  2028. APTR CreatePrivatePool( unsigned long requirements, unsigned long puddleSize,
  2029.     unsigned long puddleThresh );
  2030. void DeletePrivatePool( APTR poolHeader );
  2031. APTR AllocPooled( unsigned long memSize, APTR poolHeader );
  2032. void FreePooled( APTR memory, APTR poolHeader );
  2033. void ColdReboot( void );
  2034. void StackSwap( APTR newSize, APTR newSP, APTR newStack );
  2035. void ChildFree( APTR tid );
  2036. void ChildOrphan( APTR tid );
  2037. void ChildStatus( APTR tid );
  2038. void ChildWait( APTR tid );
  2039. struct RecordLock {
  2040.     BPTR    rec_FH;
  2041.     ULONG    rec_Offset;
  2042.     ULONG    rec_Length;
  2043.     ULONG    rec_Mode;
  2044. };
  2045. struct CSource {
  2046.     UBYTE    *CS_Buffer;
  2047.     LONG    CS_Length;
  2048.     LONG    CS_CurChr;
  2049. };
  2050. struct RDArgs {
  2051.     struct    CSource RDA_Source;
  2052.     LONG    RDA_DAList;
  2053.     UBYTE    *RDA_Buffer;
  2054.     LONG    RDA_BufSiz;
  2055.     UBYTE    *RDA_ExtHelp;
  2056.     LONG    RDA_Flags;
  2057. };
  2058. struct AnchorPath {
  2059.     struct AChain    *ap_Base;
  2060.     struct AChain    *ap_Last;
  2061.     LONG    ap_BreakBits;
  2062.     LONG    ap_FoundBreak;
  2063.     BYTE    ap_Flags;
  2064.     BYTE    ap_Reserved;
  2065.     WORD    ap_Strlen;
  2066.     struct    FileInfoBlock ap_Info;
  2067.     UBYTE    ap_Buf[1];
  2068. };
  2069. struct AChain {
  2070.     struct AChain *an_Child;
  2071.     struct AChain *an_Parent;
  2072.     BPTR    an_Lock;
  2073.     struct FileInfoBlock an_Info;
  2074.     BYTE    an_Flags;
  2075.     UBYTE    an_String[1];
  2076. };
  2077. struct LocalVar {
  2078.     struct Node lv_Node;
  2079.     UWORD    lv_Flags;
  2080.     UBYTE    *lv_Value;
  2081.     ULONG    lv_Len;
  2082. };
  2083. struct NotifyMessage {
  2084.     struct Message nm_ExecMessage;
  2085.     ULONG  nm_Class;
  2086.     UWORD  nm_Code;
  2087.     struct NotifyRequest *nm_NReq;
  2088.     ULONG  nm_DoNotTouch;
  2089.     ULONG  nm_DoNotTouch2;
  2090. };
  2091. struct NotifyRequest {
  2092.     UBYTE *nr_Name;
  2093.     UBYTE *nr_FullName;
  2094.     ULONG nr_UserData;
  2095.     ULONG nr_Flags;
  2096.     union {
  2097.         struct {
  2098.         struct MsgPort *nr_Port;
  2099.         } nr_Msg;
  2100.         struct {
  2101.         struct Task *nr_Task;
  2102.         UBYTE nr_SignalNum;
  2103.         UBYTE nr_pad[3];
  2104.         } nr_Signal;
  2105.     } nr_stuff;
  2106.     ULONG nr_Reserved[4];
  2107.     ULONG nr_MsgCount;
  2108.     struct MsgPort *nr_Handler;
  2109. };
  2110. struct DateTime {
  2111.     struct DateStamp dat_Stamp;
  2112.     UBYTE    dat_Format;
  2113.     UBYTE    dat_Flags;
  2114.     UBYTE    *dat_StrDay;
  2115.     UBYTE    *dat_StrDate;
  2116.     UBYTE    *dat_StrTime;
  2117. };
  2118. BPTR Open( UBYTE *name, long accessMode );
  2119. LONG Close( BPTR file );
  2120. LONG Read( BPTR file, APTR buffer, long length );
  2121. LONG Write( BPTR file, APTR buffer, long length );
  2122. BPTR Input( void );
  2123. BPTR Output( void );
  2124. LONG Seek( BPTR file, long position, long offset );
  2125. LONG DeleteFile( UBYTE *name );
  2126. LONG Rename( UBYTE *oldName, UBYTE *newName );
  2127. BPTR Lock( UBYTE *name, long type );
  2128. void UnLock( BPTR lock );
  2129. BPTR DupLock( BPTR lock );
  2130. LONG Examine( BPTR lock, struct FileInfoBlock *fileInfoBlock );
  2131. LONG ExNext( BPTR lock, struct FileInfoBlock *fileInfoBlock );
  2132. LONG Info( BPTR lock, struct InfoData *parameterBlock );
  2133. BPTR CreateDir( UBYTE *name );
  2134. BPTR CurrentDir( BPTR lock );
  2135. LONG IoErr( void );
  2136. struct MsgPort *CreateProc( UBYTE *name, long pri, BPTR segList,
  2137.     long stackSize );
  2138. void Exit( long returnCode );
  2139. BPTR LoadSeg( UBYTE *name );
  2140. void UnLoadSeg( BPTR seglist );
  2141. struct MsgPort *DeviceProc( UBYTE *name );
  2142. LONG SetComment( UBYTE *name, UBYTE *comment );
  2143. LONG SetProtection( UBYTE *name, long protect );
  2144. struct DateStamp *DateStamp( struct DateStamp *date );
  2145. void Delay( long timeout );
  2146. LONG WaitForChar( BPTR file, long timeout );
  2147. BPTR ParentDir( BPTR lock );
  2148. LONG IsInteractive( BPTR file );
  2149. LONG Execute( UBYTE *string, BPTR file, BPTR file2 );
  2150. APTR AllocDosObject( unsigned long type, struct TagItem *tags );
  2151. APTR AllocDosObjectTagList( unsigned long type, struct TagItem *tags );
  2152. APTR AllocDosObjectTags( unsigned long type, unsigned long tag1type, ... );
  2153. void FreeDosObject( unsigned long type, APTR ptr );
  2154. LONG DoPkt( struct MsgPort *port, long action, long arg1, long arg2, long arg3,
  2155.     long arg4, long arg5 );
  2156. LONG DoPkt0( struct MsgPort *port, long action );
  2157. LONG DoPkt1( struct MsgPort *port, long action, long arg1 );
  2158. LONG DoPkt2( struct MsgPort *port, long action, long arg1, long arg2 );
  2159. LONG DoPkt3( struct MsgPort *port, long action, long arg1, long arg2,
  2160.     long arg3 );
  2161. LONG DoPkt4( struct MsgPort *port, long action, long arg1, long arg2,
  2162.     long arg3, long arg4 );
  2163. void SendPkt( struct DosPacket *dp, struct MsgPort *port,
  2164.     struct MsgPort *replyport );
  2165. struct DosPacket *WaitPkt( void );
  2166. void ReplyPkt( struct DosPacket *dp, long res1, long res2 );
  2167. void AbortPkt( struct MsgPort *port, struct DosPacket *pkt );
  2168. BOOL LockRecord( BPTR fh, unsigned long offset, unsigned long length,
  2169.     unsigned long mode, unsigned long timeout );
  2170. BOOL LockRecords( struct RecordLock *recArray, unsigned long timeout );
  2171. BOOL UnLockRecord( BPTR fh, unsigned long offset, unsigned long length );
  2172. BOOL UnLockRecords( struct RecordLock *recArray );
  2173. BPTR SelectInput( BPTR fh );
  2174. BPTR SelectOutput( BPTR fh );
  2175. LONG FGetC( BPTR fh );
  2176. void FPutC( BPTR fh, unsigned long ch );
  2177. LONG UnGetC( BPTR fh, long character );
  2178. LONG FRead( BPTR fh, APTR block, unsigned long blocklen,
  2179.     unsigned long number );
  2180. LONG FWrite( BPTR fh, APTR block, unsigned long blocklen,
  2181.     unsigned long number );
  2182. UBYTE *FGets( BPTR fh, UBYTE *buf, unsigned long buflen );
  2183. LONG FPuts( BPTR fh, UBYTE *str );
  2184. void VFWritef( BPTR fh, UBYTE *format, LONG *argarray );
  2185. void FWritef( BPTR fh, UBYTE *format, long arg1, ... );
  2186. LONG VFPrintf( BPTR fh, UBYTE *format, LONG *argarray );
  2187. LONG FPrintf( BPTR fh, UBYTE *format, long arg1, ... );
  2188. void Flush( BPTR fh );
  2189. LONG SetVBuf( BPTR fh, UBYTE *buff, long type, long size );
  2190. BPTR DupLockFromFH( BPTR fh );
  2191. BPTR OpenFromLock( BPTR lock );
  2192. BPTR ParentOfFH( BPTR fh );
  2193. BOOL ExamineFH( BPTR fh, struct FileInfoBlock *fib );
  2194. LONG SetFileDate( UBYTE *name, struct DateStamp *date );
  2195. LONG NameFromLock( BPTR lock, UBYTE *buffer, long len );
  2196. LONG NameFromFH( BPTR fh, UBYTE *buffer, long len );
  2197. WORD SplitName( UBYTE *name, unsigned long seperator, UBYTE *buf, long oldpos,
  2198.     long size );
  2199. LONG SameLock( BPTR lock1, BPTR lock2 );
  2200. LONG SetMode( BPTR fh, long mode );
  2201. LONG ExAll( BPTR lock, struct ExAllData *buffer, long size, long data,
  2202.     struct ExAllControl *control );
  2203. LONG ReadLink( struct MsgPort *port, BPTR lock, UBYTE *path, UBYTE *buffer,
  2204.     unsigned long size );
  2205. LONG MakeLink( UBYTE *name, long dest, long soft );
  2206. LONG ChangeMode( long type, BPTR fh, long newmode );
  2207. LONG SetFileSize( BPTR fh, long pos, long mode );
  2208. LONG SetIoErr( long result );
  2209. BOOL Fault( long code, UBYTE *header, UBYTE *buffer, long len );
  2210. BOOL PrintFault( long code, UBYTE *header );
  2211. LONG ErrorReport( long code, long type, unsigned long arg1,
  2212.     struct MsgPort *device );
  2213. struct CommandLineInterface *Cli( void );
  2214. struct Process *CreateNewProc( struct TagItem *tags );
  2215. struct Process *CreateNewProcTagList( struct TagItem *tags );
  2216. struct Process *CreateNewProcTags( unsigned long tag1type, ... );
  2217. LONG RunCommand( BPTR seg, long stack, UBYTE *paramptr, long paramlen );
  2218. struct MsgPort *GetConsoleTask( void );
  2219. struct MsgPort *SetConsoleTask( struct MsgPort *task );
  2220. struct MsgPort *GetFileSysTask( void );
  2221. struct MsgPort *SetFileSysTask( struct MsgPort *task );
  2222. UBYTE *GetArgStr( void );
  2223. BOOL SetArgStr( UBYTE *string );
  2224. struct Process *FindCliProc( unsigned long num );
  2225. ULONG MaxCli( void );
  2226. BOOL SetCurrentDirName( UBYTE *name );
  2227. BOOL GetCurrentDirName( UBYTE *buf, long len );
  2228. BOOL SetProgramName( UBYTE *name );
  2229. BOOL GetProgramName( UBYTE *buf, long len );
  2230. BOOL SetPrompt( UBYTE *name );
  2231. BOOL GetPrompt( UBYTE *buf, long len );
  2232. BPTR SetProgramDir( BPTR lock );
  2233. BPTR GetProgramDir( void );
  2234. LONG SystemTagList( UBYTE *command, struct TagItem *tags );
  2235. LONG System( UBYTE *command, struct TagItem *tags );
  2236. LONG SystemTags( UBYTE *command, unsigned long tag1type, ... );
  2237. LONG AssignLock( UBYTE *name, BPTR lock );
  2238. BOOL AssignLate( UBYTE *name, UBYTE *path );
  2239. BOOL AssignPath( UBYTE *name, UBYTE *path );
  2240. BOOL AssignAdd( UBYTE *name, BPTR lock );
  2241. LONG RemAssignList( UBYTE *name, BPTR lock );
  2242. struct DevProc *GetDeviceProc( UBYTE *name, struct DevProc *dp );
  2243. void FreeDeviceProc( struct DevProc *dp );
  2244. struct DosList *LockDosList( unsigned long flags );
  2245. void UnLockDosList( unsigned long flags );
  2246. struct DosList *AttemptLockDosList( unsigned long flags );
  2247. BOOL RemDosEntry( struct DosList *dlist );
  2248. struct DosList *AddDosEntry( struct DosList *dlist );
  2249. struct DosList *FindDosEntry( struct DosList *dlist, UBYTE *name,
  2250.     unsigned long flags );
  2251. struct DosList *NextDosEntry( struct DosList *dlist, unsigned long flags );
  2252. struct DosList *MakeDosEntry( UBYTE *name, long type );
  2253. void FreeDosEntry( struct DosList *dlist );
  2254. BOOL IsFileSystem( UBYTE *name );
  2255. BOOL Format( UBYTE *filesystem, UBYTE *volumename, unsigned long dostype );
  2256. LONG Relabel( UBYTE *drive, UBYTE *newname );
  2257. LONG Inhibit( UBYTE *name, long onoff );
  2258. LONG AddBuffers( UBYTE *name, long number );
  2259. LONG CompareDates( struct DateStamp *date1, struct DateStamp *date2 );
  2260. LONG DateToStr( struct DateTime *datetime );
  2261. LONG StrToDate( struct DateTime *datetime );
  2262. BPTR InternalLoadSeg( BPTR fh, BPTR table, LONG *funcarray, LONG *stack );
  2263. void InternalUnLoadSeg( BPTR seglist, void (*freefunc)() );
  2264. BPTR NewLoadSeg( UBYTE *file, struct TagItem *tags );
  2265. BPTR NewLoadSegTagList( UBYTE *file, struct TagItem *tags );
  2266. BPTR NewLoadSegTags( UBYTE *file, unsigned long tag1type, ... );
  2267. LONG AddSegment( UBYTE *name, BPTR seg, long system );
  2268. struct Segment *FindSegment( UBYTE *name, struct Segment *seg, long system );
  2269. LONG RemSegment( struct Segment *seg );
  2270. LONG CheckSignal( long mask );
  2271. struct RDArgs *ReadArgs( UBYTE *template, LONG *array, struct RDArgs *args );
  2272. LONG FindArg( UBYTE *keyword, UBYTE *template );
  2273. LONG ReadItem( UBYTE *name, long maxchars, struct CSource *cSource );
  2274. LONG StrToLong( UBYTE *string, LONG *value );
  2275. LONG MatchFirst( UBYTE *pat, struct AnchorPath *anchor );
  2276. LONG MatchNext( struct AnchorPath *anchor );
  2277. void MatchEnd( struct AnchorPath *anchor );
  2278. BOOL ParsePattern( UBYTE *pat, UBYTE *buf, long buflen );
  2279. BOOL MatchPattern( UBYTE *pat, UBYTE *str );
  2280. void FreeArgs( struct RDArgs *args );
  2281. UBYTE *FilePart( UBYTE *path );
  2282. UBYTE *PathPart( UBYTE *path );
  2283. BOOL AddPart( UBYTE *dirname, UBYTE *filename, unsigned long size );
  2284. BOOL StartNotify( struct NotifyRequest *notify );
  2285. void EndNotify( struct NotifyRequest *notify );
  2286. BOOL SetVar( UBYTE *name, UBYTE *buffer, long size, long flags );
  2287. LONG GetVar( UBYTE *name, UBYTE *buffer, long size, long flags );
  2288. LONG DeleteVar( UBYTE *name, unsigned long flags );
  2289. struct LocalVar *FindVar( UBYTE *name, unsigned long type );
  2290. LONG CliInit( struct DosPacket *dp );
  2291. LONG CliInitNewcli( struct DosPacket *dp );
  2292. LONG CliInitRun( struct DosPacket *dp );
  2293. LONG WriteChars( UBYTE *buf, unsigned long buflen );
  2294. LONG PutStr( UBYTE *str );
  2295. LONG VPrintf( UBYTE *format, LONG *argarray );
  2296. LONG Printf( UBYTE *format, long arg1, ... );
  2297. BOOL ParsePatternNoCase( UBYTE *pat, UBYTE *buf, long buflen );
  2298. BOOL MatchPatternNoCase( UBYTE *pat, UBYTE *str );
  2299. BOOL SameDevice( BPTR lock1, BPTR lock2 );
  2300. void OpenIntuition( void );
  2301. void Intuition( struct InputEvent *iEvent );
  2302. UWORD AddGadget( struct Window *window, struct Gadget *gadget,
  2303.     unsigned long position );
  2304. BOOL ClearDMRequest( struct Window *window );
  2305. void ClearMenuStrip( struct Window *window );
  2306. void ClearPointer( struct Window *window );
  2307. BOOL CloseScreen( struct Screen *screen );
  2308. void CloseWindow( struct Window *window );
  2309. LONG CloseWorkBench( void );
  2310. void CurrentTime( ULONG *seconds, ULONG *micros );
  2311. BOOL DisplayAlert( unsigned long alertNumber, UBYTE *string,
  2312.     unsigned long height );
  2313. void DisplayBeep( struct Screen *screen );
  2314. BOOL DoubleClick( unsigned long sSeconds, unsigned long sMicros,
  2315.     unsigned long cSeconds, unsigned long cMicros );
  2316. void DrawBorder( struct RastPort *rp, struct Border *border, long leftOffset,
  2317.     long topOffset );
  2318. void DrawImage( struct RastPort *rp, struct Image *image, long leftOffset,
  2319.     long topOffset );
  2320. void EndRequest( struct Requester *requester, struct Window *window );
  2321. struct Preferences *GetDefPrefs( struct Preferences *preferences, long size );
  2322. struct Preferences *GetPrefs( struct Preferences *preferences, long size );
  2323. void InitRequester( struct Requester *requester );
  2324. struct MenuItem *ItemAddress( struct Menu *menuStrip,
  2325.     unsigned long menuNumber );
  2326. BOOL ModifyIDCMP( struct Window *window, unsigned long flags );
  2327. void ModifyProp( struct Gadget *gadget, struct Window *window,
  2328.     struct Requester *requester, unsigned long flags,
  2329.     unsigned long horizPot, unsigned long vertPot,
  2330.     unsigned long horizBody, unsigned long vertBody );
  2331. void MoveScreen( struct Screen *screen, long dx, long dy );
  2332. void MoveWindow( struct Window *window, long dx, long dy );
  2333. void OffGadget( struct Gadget *gadget, struct Window *window,
  2334.     struct Requester *requester );
  2335. void OffMenu( struct Window *window, unsigned long menuNumber );
  2336. void OnGadget( struct Gadget *gadget, struct Window *window,
  2337.     struct Requester *requester );
  2338. void OnMenu( struct Window *window, unsigned long menuNumber );
  2339. struct Screen *OpenScreen( struct NewScreen *newScreen );
  2340. struct Window *OpenWindow( struct NewWindow *newWindow );
  2341. BOOL OpenWorkBench( void );
  2342. void PrintIText( struct RastPort *rp, struct IntuiText *iText, long left,
  2343.     long top );
  2344. void RefreshGadgets( struct Gadget *gadgets, struct Window *window,
  2345.     struct Requester *requester );
  2346. UWORD RemoveGadget( struct Window *window, struct Gadget *gadget );
  2347. void ReportMouse( long flag, struct Window *window );
  2348. void ReportMouse1( struct Window *window, long flag );
  2349. BOOL Request( struct Requester *requester, struct Window *window );
  2350. void ScreenToBack( struct Screen *screen );
  2351. void ScreenToFront( struct Screen *screen );
  2352. BOOL SetDMRequest( struct Window *window, struct Requester *requester );
  2353. BOOL SetMenuStrip( struct Window *window, struct Menu *menu );
  2354. void SetPointer( struct Window *window, UWORD *pointer, long height,
  2355.     long width, long xOffset, long yOffset );
  2356. void SetWindowTitles( struct Window *window, UBYTE *windowTitle,
  2357.     UBYTE *screenTitle );
  2358. void ShowTitle( struct Screen *screen, long showIt );
  2359. void SizeWindow( struct Window *window, long dx, long dy );
  2360. struct View *ViewAddress( void );
  2361. struct ViewPort *ViewPortAddress( struct Window *window );
  2362. void WindowToBack( struct Window *window );
  2363. void WindowToFront( struct Window *window );
  2364. BOOL WindowLimits( struct Window *window, long widthMin, long heightMin,
  2365.     unsigned long widthMax, unsigned long heightMax );
  2366. struct Preferences *SetPrefs( struct Preferences *preferences, long size,
  2367.     long inform );
  2368. LONG IntuiTextLength( struct IntuiText *iText );
  2369. BOOL WBenchToBack( void );
  2370. BOOL WBenchToFront( void );
  2371. BOOL AutoRequest( struct Window *window, struct IntuiText *body,
  2372.     struct IntuiText *posText, struct IntuiText *negText,
  2373.     unsigned long pFlag, unsigned long nFlag, unsigned long width,
  2374.     unsigned long height );
  2375. void BeginRefresh( struct Window *window );
  2376. struct Window *BuildSysRequest( struct Window *window, struct IntuiText *body,
  2377.     struct IntuiText *posText, struct IntuiText *negText,
  2378.     unsigned long flags, unsigned long width, unsigned long height );
  2379. void EndRefresh( struct Window *window, long complete );
  2380. void FreeSysRequest( struct Window *window );
  2381. void MakeScreen( struct Screen *screen );
  2382. void RemakeDisplay( void );
  2383. void RethinkDisplay( void );
  2384. APTR AllocRemember( struct Remember **rememberKey, unsigned long size,
  2385.     unsigned long flags );
  2386. void AlohaWorkbench( long wbport );
  2387. void FreeRemember( struct Remember **rememberKey, long reallyForget );
  2388. ULONG LockIBase( unsigned long dontknow );
  2389. void UnlockIBase( unsigned long ibLock );
  2390. LONG GetScreenData( APTR buffer, unsigned long size, unsigned long type,
  2391.     struct Screen *screen );
  2392. void RefreshGList( struct Gadget *gadgets, struct Window *window,
  2393.     struct Requester *requester, long numGad );
  2394. UWORD AddGList( struct Window *window, struct Gadget *gadget,
  2395.     unsigned long position, long numGad, struct Requester *requester );
  2396. UWORD RemoveGList( struct Window *remPtr, struct Gadget *gadget,
  2397.     long numGad );
  2398. LONG ActivateWindow( struct Window *window );
  2399. void RefreshWindowFrame( struct Window *window );
  2400. BOOL ActivateGadget( struct Gadget *gadgets, struct Window *window,
  2401.     struct Requester *requester );
  2402. void NewModifyProp( struct Gadget *gadget, struct Window *window,
  2403.     struct Requester *requester, unsigned long flags,
  2404.     unsigned long horizPot, unsigned long vertPot,
  2405.     unsigned long horizBody, unsigned long vertBody, long numGad );
  2406. LONG QueryOverscan( unsigned long displayID, struct Rectangle *rect,
  2407.     long oScanType );
  2408. void MoveWindowInFrontOf( struct Window *window,
  2409.     struct Window *behindWindow );
  2410. void ChangeWindowBox( struct Window *window, long left, long top, long width,
  2411.     long height );
  2412. struct Hook *SetEditHook( struct Hook *hook );
  2413. LONG SetMouseQueue( struct Window *window, unsigned long queueLength );
  2414. void ZipWindow( struct Window *window );
  2415. struct Screen *LockPubScreen( UBYTE *name );
  2416. void UnlockPubScreen( UBYTE *name, struct Screen *screen );
  2417. struct List *LockPubScreenList( void );
  2418. void UnlockPubScreenList( void );
  2419. UBYTE *NextPubScreen( struct Screen *screen, UBYTE *namebuf );
  2420. void SetDefaultPubScreen( UBYTE *name );
  2421. UWORD SetPubScreenModes( unsigned long modes );
  2422. UWORD PubScreenStatus( struct Screen *screen, unsigned long statusFlags );
  2423. struct RastPort *ObtainGIRPort( struct GadgetInfo *gInfo );
  2424. void ReleaseGIRPort( struct RastPort *rp );
  2425. void GadgetMouse( struct Gadget *gadget, struct GadgetInfo *gInfo,
  2426.     WORD *mousePoint );
  2427. void GetDefaultPubScreen( UBYTE *nameBuffer );
  2428. LONG EasyRequestArgs( struct Window *window, struct EasyStruct *easyStruct,
  2429.     ULONG *idcmpPtr, APTR args );
  2430. LONG EasyRequest( struct Window *window, struct EasyStruct *easyStruct,
  2431.     ULONG *idcmpPtr, APTR arg1, ... );
  2432. struct Window *BuildEasyRequestArgs( struct Window *window,
  2433.     struct EasyStruct *easyStruct, unsigned long idcmp, APTR args );
  2434. struct Window *BuildEasyRequest( struct Window *window,
  2435.     struct EasyStruct *easyStruct, unsigned long idcmp, APTR arg1, ... );
  2436. LONG SysReqHandler( struct Window *window, ULONG *idcmpPtr, long waitInput );
  2437. struct Window *OpenWindowTagList( struct NewWindow *newWindow,
  2438.     struct TagItem *tagList );
  2439. struct Window *OpenWindowTags( struct NewWindow *newWindow,
  2440.     unsigned long tag1Type, ... );
  2441. struct Screen *OpenScreenTagList( struct NewScreen *newScreen,
  2442.     struct TagItem *tagList );
  2443. struct Screen *OpenScreenTags( struct NewScreen *newScreen,
  2444.     unsigned long tag1Type, ... );
  2445. void DrawImageState( struct RastPort *rp, struct Image *image, long leftOffset,
  2446.     long topOffset, unsigned long state, struct DrawInfo *drawInfo );
  2447. BOOL PointInImage( unsigned long point, struct Image *image );
  2448. void EraseImage( struct RastPort *rp, struct Image *image, long leftOffset,
  2449.     long topOffset );
  2450. APTR NewObjectA( struct IClass *class, UBYTE *classID,
  2451.     struct TagItem *tagList );
  2452. APTR NewObject( struct IClass *class, UBYTE *classID, unsigned long tag1,
  2453.     ... );
  2454. void DisposeObject( APTR object );
  2455. ULONG SetAttrsA( APTR object, struct TagItem *tagList );
  2456. ULONG SetAttrs( APTR object, unsigned long tag1, ... );
  2457. ULONG GetAttr( unsigned long attrID, APTR object, ULONG *storagePtr );
  2458. ULONG SetGadgetAttrsA( struct Gadget *gadget, struct Window *window,
  2459.     struct Requester *requester, struct TagItem *tagList );
  2460. ULONG SetGadgetAttrs( struct Gadget *gadget, struct Window *window,
  2461.     struct Requester *requester, unsigned long tag1, ... );
  2462. APTR NextObject( APTR objectPtrPtr );
  2463. struct IClass *MakeClass( UBYTE *classID, UBYTE *superClassID,
  2464.     struct IClass *superClassPtr, unsigned long instanceSize,
  2465.     unsigned long flags );
  2466. void AddClass( struct IClass *class );
  2467. struct DrawInfo *GetScreenDrawInfo( struct Screen *screen );
  2468. void FreeScreenDrawInfo( struct Screen *screen, struct DrawInfo *drawInfo );
  2469. BOOL ResetMenuStrip( struct Window *window, struct Menu *menu );
  2470. void RemoveClass( struct IClass *classPtr );
  2471. BOOL FreeClass( struct IClass *classPtr );
  2472. struct FontContents {
  2473.     char    fc_FileName[256];
  2474.     UWORD   fc_YSize;
  2475.     UBYTE   fc_Style;
  2476.     UBYTE   fc_Flags;
  2477. };
  2478. struct TFontContents {
  2479.     char    tfc_FileName[256-2];
  2480.     UWORD   tfc_TagCount;
  2481.     UWORD   tfc_YSize;
  2482.     UBYTE   tfc_Style;
  2483.     UBYTE   tfc_Flags;
  2484. };
  2485. struct FontContentsHeader {
  2486.     UWORD   fch_FileID;
  2487.     UWORD   fch_NumEntries;
  2488. };
  2489. struct DiskFontHeader {
  2490.     struct Node dfh_DF;
  2491.     UWORD   dfh_FileID;
  2492.     UWORD   dfh_Revision;
  2493.     LONG    dfh_Segment;
  2494.     char    dfh_Name[32];
  2495.     struct TextFont dfh_TF;
  2496. };
  2497. struct AvailFonts {
  2498.     UWORD   af_Type;
  2499.     struct TextAttr af_Attr;
  2500. };
  2501. struct TAvailFonts {
  2502.     UWORD   taf_Type;
  2503.     struct TTextAttr taf_Attr;
  2504. };
  2505. struct AvailFontsHeader {
  2506.     UWORD   afh_NumEntries;
  2507. };
  2508. struct TextFont *OpenDiskFont( struct TextAttr *textAttr );
  2509. LONG AvailFonts( STRPTR buffer, long bufBytes, long flags );
  2510. struct FontContentsHeader *NewFontContents( BPTR fontsLock, STRPTR fontName );
  2511. void DisposeFontContents( struct FontContentsHeader *fontContentsHeader );
  2512. struct DiskFontHeader *NewScaledDiskFont( struct TextFont *sourceFont,
  2513.     struct TextAttr *destTextAttr );
  2514. struct VSprite
  2515. {
  2516.     struct VSprite   *NextVSprite;
  2517.     struct VSprite   *PrevVSprite;
  2518.     struct VSprite   *DrawPath;
  2519.     struct VSprite   *ClearPath;
  2520.     WORD OldY, OldX;
  2521.     WORD Flags;
  2522.     WORD Y, X;
  2523.     WORD Height;
  2524.     WORD Width;
  2525.     WORD Depth;
  2526.     WORD MeMask;
  2527.     WORD HitMask;
  2528.     WORD *ImageData;
  2529.     WORD *BorderLine;
  2530.     WORD *CollMask;
  2531.     WORD *SprColors;
  2532.     struct Bob *VSBob;
  2533.     BYTE PlanePick;
  2534.     BYTE PlaneOnOff;
  2535.     WORD VUserExt;
  2536. };
  2537. struct Bob
  2538. {
  2539.     WORD Flags;
  2540.     WORD *SaveBuffer;
  2541.     WORD *ImageShadow;
  2542.     struct Bob *Before;
  2543.     struct Bob *After;
  2544.     struct VSprite   *BobVSprite;
  2545.     struct AnimComp  *BobComp;
  2546.     struct DBufPacket *DBuffer;
  2547.     WORD BUserExt;
  2548. };
  2549. struct AnimComp
  2550. {
  2551.     WORD Flags;
  2552.     WORD Timer;
  2553.     WORD TimeSet;
  2554.     struct AnimComp  *NextComp;
  2555.     struct AnimComp  *PrevComp;
  2556.     struct AnimComp  *NextSeq;
  2557.     struct AnimComp  *PrevSeq;
  2558.     WORD (*AnimCRoutine)();
  2559.     WORD YTrans;
  2560.     WORD XTrans;
  2561.     struct AnimOb    *HeadOb;
  2562.     struct Bob         *AnimBob;
  2563. };
  2564. struct AnimOb
  2565. {
  2566.     struct AnimOb    *NextOb, *PrevOb;
  2567.     LONG Clock;
  2568.     WORD AnOldY, AnOldX;
  2569.     WORD AnY, AnX;
  2570.     WORD YVel, XVel;
  2571.     WORD YAccel, XAccel;
  2572.     WORD RingYTrans, RingXTrans;
  2573.     WORD (*AnimORoutine)();
  2574.     struct AnimComp  *HeadComp;
  2575.     WORD AUserExt;
  2576. };
  2577. struct DBufPacket
  2578. {
  2579.     WORD BufY, BufX;
  2580.     struct VSprite   *BufPath;
  2581.     WORD *BufBuffer;
  2582. };
  2583. struct collTable
  2584. {
  2585.     int (*collPtrs[16])();
  2586. };
  2587. struct RegionRectangle
  2588. {
  2589.     struct RegionRectangle *Next,*Prev;
  2590.     struct Rectangle bounds;
  2591. };
  2592. struct Region
  2593. {
  2594.     struct Rectangle bounds;
  2595.     struct RegionRectangle *RegionRectangle;
  2596. };
  2597. struct SimpleSprite
  2598. {
  2599.     UWORD *posctldata;
  2600.     UWORD height;
  2601.     UWORD   x,y;
  2602.     UWORD   num;
  2603. };
  2604. struct bltnode
  2605. {
  2606.     struct  bltnode *n;
  2607.     int     (*function)();
  2608.     char    stat;
  2609.     short   blitsize;
  2610.     short   beamsync;
  2611.     int     (*cleanup)();
  2612. };
  2613. LONG BltBitMap( struct BitMap *srcBitMap, long xSrc, long ySrc,
  2614.     struct BitMap *destBitMap, long xDest, long yDest, long xSize,
  2615.     long ySize, unsigned long minterm, unsigned long mask,
  2616.     PLANEPTR tempA );
  2617. void BltTemplate( PLANEPTR source, long xSrc, long srcMod,
  2618.     struct RastPort *destRP, long xDest, long yDest, long xSize,
  2619.     long ySize );
  2620. void ClearEOL( struct RastPort *rp );
  2621. void ClearScreen( struct RastPort *rp );
  2622. WORD TextLength( struct RastPort *rp, STRPTR string, unsigned long count );
  2623. LONG Text( struct RastPort *rp, STRPTR string, unsigned long count );
  2624. LONG SetFont( struct RastPort *rp, struct TextFont *textFont );
  2625. struct TextFont *OpenFont( struct TextAttr *textAttr );
  2626. void CloseFont( struct TextFont *textFont );
  2627. ULONG AskSoftStyle( struct RastPort *rp );
  2628. ULONG SetSoftStyle( struct RastPort *rp, unsigned long style,
  2629.     unsigned long enable );
  2630. void AddBob( struct Bob *bob, struct RastPort *rp );
  2631. void AddVSprite( struct VSprite *vSprite, struct RastPort *rp );
  2632. void DoCollision( struct RastPort *rp );
  2633. void DrawGList( struct RastPort *rp, struct ViewPort *vp );
  2634. void InitGels( struct VSprite *head, struct VSprite *tail,
  2635.     struct GelsInfo *gelsInfo );
  2636. void InitMasks( struct VSprite *vSprite );
  2637. void RemIBob( struct Bob *bob, struct RastPort *rp, struct ViewPort *vp );
  2638. void RemVSprite( struct VSprite *vSprite );
  2639. void SetCollision( unsigned long num,
  2640.     void (*routine)(struct VSprite *vSprite, APTR),
  2641.     struct GelsInfo *gelsInfo );
  2642. void SortGList( struct RastPort *rp );
  2643. void AddAnimOb( struct AnimOb *anOb, struct AnimOb **anKey,
  2644.     struct RastPort *rp );
  2645. void Animate( struct AnimOb **anKey, struct RastPort *rp );
  2646. BOOL GetGBuffers( struct AnimOb *anOb, struct RastPort *rp, long flag );
  2647. void InitGMasks( struct AnimOb *anOb );
  2648. void DrawEllipse( struct RastPort *rp, long xCenter, long yCenter, long a,
  2649.     long b );
  2650. LONG AreaEllipse( struct RastPort *rp, long xCenter, long yCenter, long a,
  2651.     long b );
  2652. void LoadRGB4( struct ViewPort *vp, UWORD *colors, long count );
  2653. void InitRastPort( struct RastPort *rp );
  2654. void InitVPort( struct ViewPort *vp );
  2655. void MrgCop( struct View *view );
  2656. void MakeVPort( struct View *view, struct ViewPort *vp );
  2657. void LoadView( struct View *view );
  2658. void WaitBlit( void );
  2659. void SetRast( struct RastPort *rp, unsigned long pen );
  2660. void Move( struct RastPort *rp, long x, long y );
  2661. void Draw( struct RastPort *rp, long x, long y );
  2662. LONG AreaMove( struct RastPort *rp, long x, long y );
  2663. LONG AreaDraw( struct RastPort *rp, long x, long y );
  2664. LONG AreaEnd( struct RastPort *rp );
  2665. void WaitTOF( void );
  2666. void QBlit( struct bltnode *blit );
  2667. void InitArea( struct AreaInfo *areaInfo, APTR vectorBuffer,
  2668.     long maxVectors );
  2669. void SetRGB4( struct ViewPort *vp, long index, unsigned long red,
  2670.     unsigned long green, unsigned long blue );
  2671. void QBSBlit( struct bltnode *blit );
  2672. void BltClear( PLANEPTR memBlock, unsigned long byteCount,
  2673.     unsigned long flags );
  2674. void RectFill( struct RastPort *rp, long xMin, long yMin, long xMax,
  2675.     long yMax );
  2676. void BltPattern( struct RastPort *rp, PLANEPTR mask, long xMin, long yMin,
  2677.     long xMax, long yMax, unsigned long maskBPR );
  2678. ULONG ReadPixel( struct RastPort *rp, long x, long y );
  2679. LONG WritePixel( struct RastPort *rp, long x, long y );
  2680. BOOL Flood( struct RastPort *rp, unsigned long mode, long x, long y );
  2681. void PolyDraw( struct RastPort *rp, long count, WORD *polyTable );
  2682. void SetAPen( struct RastPort *rp, unsigned long pen );
  2683. void SetBPen( struct RastPort *rp, unsigned long pen );
  2684. void SetDrMd( struct RastPort *rp, unsigned long drawMode );
  2685. void InitView( struct View *view );
  2686. void CBump( struct UCopList *copList );
  2687. void CMove( struct UCopList *copList, APTR destination, long data );
  2688. void CWait( struct UCopList *copList, long v, long h );
  2689. LONG VBeamPos( void );
  2690. void InitBitMap( struct BitMap *bitMap, long depth, long width, long height );
  2691. void ScrollRaster( struct RastPort *rp, long dx, long dy, long xMin, long yMin,
  2692.     long xMax, long yMax );
  2693. void WaitBOVP( struct ViewPort *vp );
  2694. WORD GetSprite( struct SimpleSprite *sprite, long num );
  2695. void FreeSprite( long num );
  2696. void ChangeSprite( struct ViewPort *vp, struct SimpleSprite *sprite,
  2697.     PLANEPTR newData );
  2698. void MoveSprite( struct ViewPort *vp, struct SimpleSprite *sprite, long x,
  2699.     long y );
  2700. void LockLayerRom( struct Layer *layer );
  2701. void UnlockLayerRom( struct Layer *layer );
  2702. void SyncSBitMap( struct Layer *layer );
  2703. void CopySBitMap( struct Layer *layer );
  2704. void OwnBlitter( void );
  2705. void DisownBlitter( void );
  2706. struct TmpRas *InitTmpRas( struct TmpRas *tmpRas, PLANEPTR buffer,
  2707.     long size );
  2708. void AskFont( struct RastPort *rp, struct TextAttr *textAttr );
  2709. void AddFont( struct TextFont *textFont );
  2710. void RemFont( struct TextFont *textFont );
  2711. PLANEPTR AllocRaster( unsigned long width, unsigned long height );
  2712. void FreeRaster( PLANEPTR p, unsigned long width, unsigned long height );
  2713. void AndRectRegion( struct Region *region, struct Rectangle *rectangle );
  2714. BOOL OrRectRegion( struct Region *region, struct Rectangle *rectangle );
  2715. struct Region *NewRegion( void );
  2716. BOOL ClearRectRegion( struct Region *region, struct Rectangle *rectangle );
  2717. void ClearRegion( struct Region *region );
  2718. void DisposeRegion( struct Region *region );
  2719. void FreeVPortCopLists( struct ViewPort *vp );
  2720. void FreeCopList( struct CopList *copList );
  2721. void ClipBlit( struct RastPort *srcRP, long xSrc, long ySrc,
  2722.     struct RastPort *destRP, long xDest, long yDest, long xSize,
  2723.     long ySize, unsigned long minterm );
  2724. BOOL XorRectRegion( struct Region *region, struct Rectangle *rectangle );
  2725. void FreeCprList( struct cprlist *cprList );
  2726. struct ColorMap *GetColorMap( long entries );
  2727. void FreeColorMap( struct ColorMap *colorMap );
  2728. ULONG GetRGB4( struct ColorMap *colorMap, long entry );
  2729. void ScrollVPort( struct ViewPort *vp );
  2730. struct CopList *UCopperListInit( struct UCopList *uCopList, long n );
  2731. void FreeGBuffers( struct AnimOb *anOb, struct RastPort *rp, long flag );
  2732. void BltBitMapRastPort( struct BitMap *srcBitMap, long xSrc, long ySrc,
  2733.     struct RastPort *destRP, long xDest, long yDest, long xSize,
  2734.     long ySize, unsigned long minterm );
  2735. BOOL OrRegionRegion( struct Region *srcRegion, struct Region *destRegion );
  2736. BOOL XorRegionRegion( struct Region *srcRegion, struct Region *destRegion );
  2737. BOOL AndRegionRegion( struct Region *srcRegion, struct Region *destRegion );
  2738. void SetRGB4CM( struct ColorMap *colorMap, long index, unsigned long red,
  2739.     unsigned long green, unsigned long blue );
  2740. void BltMaskBitMapRastPort( struct BitMap *srcBitMap, long xSrc, long ySrc,
  2741.     struct RastPort *destRP, long xDest, long yDest, long xSize,
  2742.     long ySize, unsigned long minterm, PLANEPTR bltMask );
  2743. BOOL AttemptLockLayerRom( struct Layer *layer );
  2744. APTR GfxNew( unsigned long gfxNodeType );
  2745. void GfxFree( APTR gfxNodePtr );
  2746. void GfxAssociate( APTR associateNode, APTR gfxNodePtr );
  2747. void BitMapScale( struct BitScaleArgs *bitScaleArgs );
  2748. UWORD ScalerDiv( unsigned long factor, unsigned long numerator,
  2749.     unsigned long denominator );
  2750. WORD TextExtent( struct RastPort *rp, STRPTR string, long count,
  2751.     struct TextExtent *textExtent );
  2752. ULONG TextFit( struct RastPort *rp, STRPTR string, unsigned long strLen,
  2753.     struct TextExtent *textExtent, struct TextExtent *constrainingExtent,
  2754.     long strDirection, unsigned long constrainingBitWidth,
  2755.     unsigned long constrainingBitHeight );
  2756. APTR GfxLookUp( APTR associateNode );
  2757. BOOL VideoControl( struct ColorMap *colorMap, struct TagItem *tagarray );
  2758. struct MonitorSpec *OpenMonitor( STRPTR monitorName,
  2759.     unsigned long displayID );
  2760. BOOL CloseMonitor( struct MonitorSpec *monitorSpec );
  2761. DisplayInfoHandle FindDisplayInfo( unsigned long displayID );
  2762. ULONG NextDisplayInfo( unsigned long displayID );
  2763. ULONG GetDisplayInfoData( DisplayInfoHandle handle, UBYTE *buf,
  2764.     unsigned long size, unsigned long tagID, unsigned long displayID );
  2765. void FontExtent( struct TextFont *font, struct TextExtent *fontExtent );
  2766. LONG ReadPixelLine8( struct RastPort *rp, unsigned long xstart,
  2767.     unsigned long ystart, unsigned long width, UBYTE *array,
  2768.     struct RastPort *tempRP );
  2769. LONG WritePixelLine8( struct RastPort *rp, unsigned long xstart,
  2770.     unsigned long ystart, unsigned long width, UBYTE *array,
  2771.     struct RastPort *tempRP );
  2772. LONG ReadPixelArray8( struct RastPort *rp, unsigned long xstart,
  2773.     unsigned long ystart, unsigned long xstop, unsigned long ystop,
  2774.     UBYTE *array, struct RastPort *temprp );
  2775. LONG WritePixelArray8( struct RastPort *rp, unsigned long xstart,
  2776.     unsigned long ystart, unsigned long xstop, unsigned long ystop,
  2777.     UBYTE *array, struct RastPort *temprp );
  2778. LONG GetVPModeID( struct ViewPort *vp );
  2779. LONG ModeNotAvailable( unsigned long modeID );
  2780. WORD WeighTAMatch( struct TextAttr *reqTextAttr,
  2781.     struct TextAttr *targetTextAttr, struct TagItem *targetTags );
  2782. void EraseRect( struct RastPort *rp, long xMin, long yMin, long xMax,
  2783.     long yMax );
  2784. ULONG ExtendFont( struct TextFont *font, struct TagItem *fontTags );
  2785. void StripFont( struct TextFont *font );
  2786. struct Gadget *CreateGadgetA( unsigned long kind, struct Gadget *gad,
  2787.     struct NewGadget *ng, struct TagItem *taglist );
  2788. struct Gadget *CreateGadget( unsigned long kind, struct Gadget *gad,
  2789.     struct NewGadget *ng, Tag tag1, ... );
  2790. void FreeGadgets( struct Gadget *gad );
  2791. void GT_SetGadgetAttrsA( struct Gadget *gad, struct Window *win,
  2792.     struct Requester *req, struct TagItem *taglist );
  2793. void GT_SetGadgetAttrs( struct Gadget *gad, struct Window *win,
  2794.     struct Requester *req, Tag tag1, ... );
  2795. struct Menu *CreateMenusA( struct NewMenu *newmenu, struct TagItem *taglist );
  2796. struct Menu *CreateMenus( struct NewMenu *newmenu, Tag tag1, ... );
  2797. void FreeMenus( struct Menu *menu );
  2798. BOOL LayoutMenuItemsA( struct MenuItem *firstitem, APTR vi,
  2799.     struct TagItem *taglist );
  2800. BOOL LayoutMenuItems( struct MenuItem *firstitem, APTR vi, Tag tag1, ... );
  2801. BOOL LayoutMenusA( struct Menu *firstmenu, APTR vi, struct TagItem *taglist );
  2802. BOOL LayoutMenus( struct Menu *firstmenu, APTR vi, Tag tag1, ... );
  2803. struct IntuiMessage *GT_GetIMsg( struct MsgPort *iport );
  2804. void GT_ReplyIMsg( struct IntuiMessage *imsg );
  2805. void GT_RefreshWindow( struct Window *win, struct Requester *req );
  2806. void GT_BeginRefresh( struct Window *win );
  2807. void GT_EndRefresh( struct Window *win, long complete );
  2808. struct IntuiMessage *GT_FilterIMsg( struct IntuiMessage *imsg );
  2809. struct IntuiMessage *GT_PostFilterIMsg( struct IntuiMessage *imsg );
  2810. struct Gadget *CreateContext( struct Gadget **glistptr );
  2811. void DrawBevelBoxA( struct RastPort *rport, long left, long top, long width,
  2812.     long height, struct TagItem *taglist );
  2813. void DrawBevelBox( struct RastPort *rport, long left, long top, long width,
  2814.     long height, Tag tag1, ... );
  2815. APTR GetVisualInfoA( struct Screen *screen, struct TagItem *taglist );
  2816. APTR GetVisualInfo( struct Screen *screen, Tag tag1, ... );
  2817. void FreeVisualInfo( APTR vi );
  2818. struct WBStartup {
  2819.     struct Message    sm_Message;
  2820.     struct MsgPort *    sm_Process;
  2821.     BPTR        sm_Segment;
  2822.     LONG        sm_NumArgs;
  2823.     char *        sm_ToolWindow;
  2824.     struct WBArg *    sm_ArgList;
  2825. };
  2826. struct WBArg {
  2827.     BPTR        wa_Lock;
  2828.     BYTE *        wa_Name;
  2829. };
  2830. struct FileRequester    {
  2831.     APTR    rf_Reserved1;
  2832.     BYTE    *rf_File;
  2833.     BYTE    *rf_Dir;
  2834.     CPTR    rf_Reserved2;
  2835.     UBYTE    rf_Reserved3;
  2836.     UBYTE    rf_Reserved4;
  2837.     APTR    rf_Reserved5;
  2838.     WORD    rf_LeftEdge,rf_TopEdge;
  2839.     WORD    rf_Width,rf_Height;
  2840.     WORD    rf_Reserved6;
  2841.     LONG    rf_NumArgs;
  2842.     struct WBArg *rf_ArgList;
  2843.     APTR    rf_UserData;
  2844.     APTR    rf_Reserved7;
  2845.     APTR    rf_Reserved8;
  2846.     BYTE    *rf_Pat;
  2847.     };
  2848. struct FontRequester    {
  2849.     APTR    fo_Reserved1[2];
  2850.     struct TextAttr fo_Attr;
  2851.     UBYTE    fo_FrontPen;
  2852.     UBYTE    fo_BackPen;
  2853.     UBYTE    fo_DrawMode;
  2854.     APTR    fo_UserData;
  2855.     };
  2856. struct FileRequester *AllocFileRequest( void );
  2857. void FreeFileRequest( struct FileRequester *fileReq );
  2858. BOOL RequestFile( struct FileRequester *fileReq );
  2859. APTR AllocAslRequest( unsigned long type, struct TagItem *tagList );
  2860. APTR AllocAslRequestTags( unsigned long type, Tag Tag1, ... );
  2861. void FreeAslRequest( APTR request );
  2862. BOOL AslRequest( APTR request, struct TagItem *tagList );
  2863. BOOL AslRequestTags( APTR request, Tag Tag1, ... );
  2864. int     SPFix();
  2865. float     SPFlt();
  2866. int     SPCmp();
  2867. int     SPTst();
  2868. float     SPAbs();
  2869. float     SPFloor();
  2870. float     SPCeil();
  2871. float     SPNeg();
  2872. float     SPAdd();
  2873. float     SPSub();
  2874. float     SPMul();
  2875. float     SPDiv();
  2876. float     SPAsin(),  SPAcos(),  SPAtan();
  2877. float     SPSin(),   SPCos(),   SPTan(),   SPSincos();
  2878. float     SPSinh(),  SPCosh(),  SPTanh();
  2879. float     SPExp(),   SPLog(),   SPLog10(), SPPow();
  2880. float     SPSqrt(),  SPFieee();
  2881. float     afp(),    dbf();
  2882. struct NewBroker {
  2883.    BYTE     nb_Version;
  2884.    BYTE     *nb_Name;
  2885.    BYTE     *nb_Title;
  2886.    BYTE     *nb_Descr;
  2887.    SHORT    nb_Unique;
  2888.    SHORT    nb_Flags;
  2889.    BYTE     nb_Pri;
  2890.    struct MsgPort   *nb_Port;
  2891.    WORD     nb_ReservedChannel;
  2892. };
  2893. typedef LONG   CxObj;
  2894. typedef LONG   CxMsg;
  2895. typedef LONG   (*PFL)();
  2896. struct InputXpression {
  2897.    UBYTE   ix_Version;
  2898.    UBYTE   ix_Class;
  2899.    UWORD   ix_Code;
  2900.    UWORD   ix_CodeMask;
  2901.    UWORD   ix_Qualifier;
  2902.    UWORD   ix_QualMask;
  2903.    UWORD   ix_QualSame;
  2904.    };
  2905. typedef struct InputXpression IX;
  2906. void BeginIO( struct IORequest *io );
  2907. struct IORequest *CreateExtIO( struct MsgPort *msg, long size );
  2908. struct MsgPort *CreatePort( UBYTE *name, long pri );
  2909. struct IOStdReq *CreateStdIO( struct MsgPort *msg );
  2910. struct Task *CreateTask( UBYTE *name, long pri, APTR initPC,
  2911.     unsigned long stackSize );
  2912. void DeleteExtIO( struct IORequest *io );
  2913. void DeletePort( struct MsgPort *io );
  2914. void DeleteStdIO( struct IOStdReq *io );
  2915. void DeleteTask( struct Task *task );
  2916. void NewList( struct List *list );
  2917. LONG NameFromAnchor( struct AnchorPath *anchor, UBYTE *buffer, long buflen );
  2918. void AddTOF( struct Isrvstr *i, long (*p)(), long a );
  2919. void RemTOF( struct Isrvstr *i );
  2920. void waitbeam( long b );
  2921. FLOAT afp( BYTE *string );
  2922. void arnd( long place, long SPExp, BYTE *string );
  2923. FLOAT dbf( unsigned long SPExp, unsigned long mant );
  2924. LONG fpa( FLOAT fnum, BYTE *string );
  2925. void fpbcd( FLOAT fnum, BYTE *string );
  2926. LONG TimeDelay( long unit, unsigned long secs, unsigned long microsecs );
  2927. LONG DoTimer( struct timeval *, long unit, long command );
  2928. void ArgArrayDone( void );
  2929. UBYTE **ArgArrayInit( long arg1, UBYTE **arg2 );
  2930. LONG ArgInt( UBYTE **arg1, UBYTE *arg2, long arg3 );
  2931. UBYTE *ArgString( UBYTE **arg1, UBYTE *arg2, UBYTE *arg3 );
  2932. CxObj *HotKey( UBYTE *arg1, struct MsgPort *arg2, long arg3 );
  2933. struct InputEvent *InvertString( UBYTE *arg1, ULONG *arg2 );
  2934. LONG GetIcon( UBYTE *name, struct DiskObject *icon,
  2935.     struct FreeList *freelist );
  2936. BOOL PutIcon( UBYTE *name, struct DiskObject *icon );
  2937. void FreeFreeList( struct FreeList *freelist );
  2938. BOOL AddFreeList( struct FreeList *freelist, APTR mem, unsigned long size );
  2939. struct DiskObject *GetDiskObject( UBYTE *name );
  2940. BOOL PutDiskObject( UBYTE *name, struct DiskObject *diskobj );
  2941. void FreeDiskObject( struct DiskObject *diskobj );
  2942. UBYTE *FindToolType( UBYTE **toolTypeArray, UBYTE *typeName );
  2943. BOOL MatchToolValue( UBYTE *typeString, UBYTE *value );
  2944. UBYTE *BumpRevision( UBYTE *newname, UBYTE *oldname );
  2945. struct DiskObject *GetDefDiskObject( long type );
  2946. BOOL PutDefDiskObject( struct DiskObject *diskObject );
  2947. struct DiskObject *GetDiskObjectNew( UBYTE *name );
  2948. BOOL DeleteDiskObject( UBYTE *name );
  2949. struct AppWindow *AddAppWindowA( unsigned long id, unsigned long userdata,
  2950.     struct Window *window, struct MsgPort *msgport,
  2951.     struct TagItem *taglist );
  2952. struct AppWindow *AddAppWindow( unsigned long id, unsigned long userdata,
  2953.     struct Window *window, struct MsgPort *msgport, Tag tag1, ... );
  2954. BOOL RemoveAppWindow( struct AppWindow *appWindow );
  2955. struct AppIcon *AddAppIconA( unsigned long id, unsigned long userdata,
  2956.     UBYTE *text, struct MsgPort *msgport, struct FileLock *lock,
  2957.     struct DiskObject *diskobj, struct TagItem *taglist );
  2958. struct AppIcon *AddAppIcon( unsigned long id, unsigned long userdata,
  2959.     UBYTE *text, struct MsgPort *msgport, struct FileLock *lock,
  2960.     struct DiskObject *diskobj, Tag tag1, ... );
  2961. BOOL RemoveAppIcon( struct AppIcon *appIcon );
  2962. struct AppMenuItem *AddAppMenuItemA( unsigned long id, unsigned long userdata,
  2963.     UBYTE *text, struct MsgPort *msgport, struct TagItem *taglist );
  2964. struct AppMenuItem *AddAppMenuItem( unsigned long id, unsigned long userdata,
  2965.     UBYTE *text, struct MsgPort *msgport, Tag tag1, ... );
  2966. BOOL RemoveAppMenuItem( struct AppMenuItem *appMenuItem );
  2967. typedef struct TagItem          TAGS;
  2968. typedef BPTR                    LOCK;
  2969. typedef struct FileInfoBlock    FIB;
  2970. typedef struct Process          APROCESS;
  2971. typedef struct CommandLineInterface CLI;
  2972. typedef struct ExecBase     EBASE;
  2973. typedef struct Node             NODE;
  2974. typedef struct List             LIST;
  2975. typedef struct Library          LIBRARY;
  2976. typedef struct Message          MSG;
  2977. typedef struct MsgPort          MPORT;
  2978. typedef struct Task        TASK;
  2979. typedef struct IntuitionBase    IBASE;
  2980. typedef struct VisualInfo       VINFO;
  2981. typedef struct Gadget           GADGET;
  2982. typedef struct NewGadget        NEWGAD;
  2983. typedef struct Screen           SCREEN;
  2984. typedef struct Window           WINDOW;
  2985. typedef struct IntuiMessage     IMSG;
  2986. typedef struct StringInfo       STRINGINFO;
  2987. typedef struct GfxBase          GBASE;
  2988. typedef struct View             VIEW;
  2989. typedef struct ViewPort         VPORT;
  2990. typedef struct RastPort         RPORT;
  2991. typedef struct BitMap           BITMAP;
  2992. typedef struct RasInfo          RINFO;
  2993. typedef struct TextAttr         TATTR;
  2994. typedef struct Rectangle        RECT;
  2995. typedef struct TextFont         FONT;
  2996. typedef struct IORequest        IOREQ;
  2997. typedef struct IOStdReq         STDREQ;
  2998. typedef struct IOExtSer         SERREQ;
  2999. typedef struct WBStartup    WBMSG;
  3000. typedef struct FontRequester    FONTREQ;
  3001. typedef struct FileRequester    FILEREQ;
  3002. extern __far struct Custom      custom;
  3003. extern GBASE                    *GfxBase;
  3004. typedef struct DLIST {
  3005.     NODE    node;
  3006.     char    name[2];
  3007. } DLIST;
  3008. typedef struct SYMLIST {
  3009.     ULONG *symbolname;
  3010.     ULONG address;
  3011. } SYMLIST;
  3012. enum DTYPES {
  3013.     DTYPE_DOSBASE,
  3014.     DTYPE_PROCESS,
  3015.     DTYPE_INFO,
  3016.     DTYPE_EXECBASE,
  3017.     DTYPE_RESOURCES,
  3018.     DTYPE_INTRS,
  3019.     DTYPE_PORTS,
  3020.     DTYPE_TASKS,
  3021.     DTYPE_LIBS,
  3022.     DTYPE_DEVICES,
  3023.     DTYPE_MEMLIST,
  3024.     DTYPE_REXXLIST,
  3025.     DTYPE_SYMLIST,
  3026.     MAX_DTYPE,
  3027. };
  3028. typedef struct DBugDisp {
  3029.     NODE    ds_Node;
  3030.     WINDOW    *ds_Win;
  3031.     STDREQ    ds_CReadReq;
  3032.     STDREQ    ds_CWriteReq;
  3033.     UBYTE    ds_CReadIP;
  3034.     UBYTE    ds_CWriteIP;
  3035.     UBYTE    ds_OpenError;
  3036.     UBYTE    ds_CsiState;
  3037.     UBYTE    ds_DoneFlag;
  3038.     UBYTE    ds_DisplayOffsets;
  3039.     UBYTE    ds_PromptLen;
  3040.     UBYTE    ds_PromptStart;
  3041.     ULONG    ds_Flags;
  3042.     UBYTE    ds_CInChar;
  3043.     UBYTE    ds_COutBuf[255];
  3044.     WORD    ds_COutIndex;
  3045.     UWORD    ds_DisplayMode;
  3046.     UWORD    ds_PreferedMode;
  3047.     UWORD    ds_ScrRows;
  3048.     UWORD    ds_ScrCols;
  3049.     UWORD    ds_ScrTop;
  3050.     UWORD    ds_ScrColNo;
  3051.     UWORD    ds_ScrRowNo;
  3052.     UBYTE    ds_RegFlag;
  3053.     UBYTE    ds_RegTouched;
  3054.     UBYTE    *ds_ScrAry;
  3055.     ULONG    ds_WindowTop;
  3056.     ULONG    ds_WindowTopLine;
  3057.     ULONG    ds_WindowBot;
  3058.     ULONG    ds_WindowBotLine;
  3059.     ULONG    ds_LastRefreshMode;
  3060.     ULONG    ds_LastRefreshTop;
  3061.     LIST    ds_List;
  3062.     char    ds_windowTitle[128];
  3063. } DBugDisp;
  3064. typedef struct SOURCE {
  3065.     ULONG    lineNumber;
  3066.     ULONG    address;
  3067. } SOURCE;
  3068. typedef struct DEBUG    {
  3069.     struct DEBUG    *link;
  3070.     struct SOURCE    *table;
  3071.     struct SOURCE    *tableEnd;
  3072.     char        sourceName[128];
  3073.     char        *source;
  3074.     ULONG        addrBegin;
  3075.     ULONG        addrEnd;
  3076. } DEBUG;
  3077. typedef struct HUNK {
  3078.     ULONG    type;
  3079.     ULONG    size;
  3080.     ULONG    *memptr;
  3081.     ULONG    *actual;
  3082.     ULONG    hSize;
  3083.     APTR    hunk;
  3084.     APTR    reloc32;
  3085.     APTR    symbols;
  3086.     DEBUG    *debug;
  3087. } HUNK;
  3088. typedef struct BP {
  3089.     UWORD    state;
  3090.     UWORD    count;
  3091.     UWORD    value;
  3092.     UWORD    *address;
  3093. } BP;
  3094. typedef struct WP {
  3095.     ULONG        type;
  3096.     char        expression[128];
  3097. } WP;
  3098. typedef struct DPREFS    {
  3099.     UWORD    top,left,width,height;
  3100.     UWORD DefaultMode;
  3101.     UBYTE DefaultOffset;
  3102.     alias[96];
  3103. } DPREFS;
  3104. extern IBASE            *IntuitionBase;
  3105. extern GBASE            *GfxBase;
  3106. extern EBASE            *SysBase;
  3107. extern struct DosLibrary    *DOSBase;
  3108. extern struct Library        *GadToolsBase;
  3109. extern char *RexxHostName;
  3110. extern char    *args;
  3111. extern ULONG    argSize;
  3112. extern TASK    *thisTask;
  3113. extern APROCESS *thisProcess;
  3114. extern CLI    *thisCli;
  3115. extern char    targetName[];
  3116. extern ULONG    *exeFile;
  3117. extern ULONG    exeSize;
  3118. extern ULONG    numHunks, firstHunk, lastHunk;
  3119. extern HUNK    *hunkArray;
  3120. extern USHORT oldrow, oldcol;
  3121. extern UBYTE    *programStack;
  3122. extern ULONG    programStackSize;
  3123. extern ULONG    programState;
  3124. extern UWORD    programSR;
  3125. extern ULONG    programPC;
  3126. extern ULONG    programD0;
  3127. extern ULONG    programD1;
  3128. extern ULONG    programD2;
  3129. extern ULONG    programD3;
  3130. extern ULONG    programD4;
  3131. extern ULONG    programD5;
  3132. extern ULONG    programD6;
  3133. extern ULONG    programD7;
  3134. extern ULONG    programA0;
  3135. extern ULONG    programA1;
  3136. extern ULONG    programA2;
  3137. extern ULONG    programA3;
  3138. extern ULONG    programA4;
  3139. extern ULONG    programA5;
  3140. extern ULONG    programA6;
  3141. extern ULONG    programA7;
  3142. extern ULONG    lastState;
  3143. extern UWORD    lastSR;
  3144. extern ULONG    lastPC;
  3145. extern ULONG    lastD0;
  3146. extern ULONG    lastD1;
  3147. extern ULONG    lastD2;
  3148. extern ULONG    lastD3;
  3149. extern ULONG    lastD4;
  3150. extern ULONG    lastD5;
  3151. extern ULONG    lastD6;
  3152. extern ULONG    lastD7;
  3153. extern ULONG    lastA0;
  3154. extern ULONG    lastA1;
  3155. extern ULONG    lastA2;
  3156. extern ULONG    lastA3;
  3157. extern ULONG    lastA4;
  3158. extern ULONG    lastA5;
  3159. extern ULONG    lastA6;
  3160. extern ULONG    lastA7;
  3161. enum DISPLAY_MODES {
  3162.     DISPLAY_DISM,
  3163.     DISPLAY_SOURCE,
  3164.     DISPLAY_MIXED,
  3165.     DISPLAY_BYTES,
  3166.     DISPLAY_WORDS,
  3167.     DISPLAY_LONGS,
  3168.     DISPLAY_HUNKS,
  3169.     DISPLAY_SYMBOL,
  3170.     DISPLAY_HELP,
  3171.     DISPLAY_BREAK,
  3172.     DISPLAY_DOSBASE,
  3173.     DISPLAY_PROCESS,
  3174.     DISPLAY_INFO,
  3175.     DISPLAY_EXECBASE,
  3176.     DISPLAY_RESOURCES,
  3177.     DISPLAY_INTRS,
  3178.     DISPLAY_PORTS,
  3179.     DISPLAY_TASKS,
  3180.     DISPLAY_LIBS,
  3181.     DISPLAY_DEVICES,
  3182.     DISPLAY_MEMLIST,
  3183.     DISPLAY_REXXLIST,
  3184.     DISPLAY_SYMLIST,
  3185.     MAX_MODES,
  3186. };
  3187. extern DPREFS    dprefs;
  3188. extern char    commandLine[];
  3189. extern UWORD    commandCol, commandEnd;
  3190. extern WP    wpTable[32];
  3191. extern BP    bpTable[32];
  3192. extern BP    bpTemp;
  3193. extern WORD    topBP;
  3194. extern DBugDisp *CurDisplay;
  3195. extern unsigned long  ScrollStart, ScrollEnd;
  3196. extern int SymbolCount;
  3197. extern __stkargs UBYTE    *MallocPublic(ULONG size);
  3198. extern __stkargs UBYTE    *MallocFast(ULONG size);
  3199. extern __stkargs UBYTE    *MallocChip(ULONG size);
  3200. extern __stkargs UBYTE    *MallocAny(ULONG size, ULONG type);
  3201. extern __stkargs void    Free(APTR ptr);
  3202. extern __stkargs void    CleanMem(void);
  3203. extern __stkargs ULONG    Disassemble(ULONG src, ULONG addr, char *buf);
  3204. extern __stkargs void    EnterProgram(void);
  3205. extern __stkargs void    TargetExit(void);
  3206. extern void    FreeDLIST(LIST *list);
  3207. extern BOOL    AddListNODE(LIST *list, UBYTE type, char *data);
  3208. extern BOOL    DownList(void);
  3209. extern BOOL    UpList(void);
  3210. extern BOOL    PageDownList(void);
  3211. extern BOOL    PageUpList(void);
  3212. extern WORD    RefreshList(WORD maxLines, BOOL fullRefresh, LONG top);
  3213. extern BOOL    SprintfDLIST(LIST *list, UBYTE type, char *fmt, ...);
  3214. extern void    ListDosBase(DBugDisp *dp);
  3215. extern void    ListProcess(DBugDisp *dp);
  3216. extern void    ListInfo(DBugDisp *dp);
  3217. extern void    ListExecBase(DBugDisp *dp);
  3218. extern void    BuildDLIST(LIST *dst, LIST *src, ULONG type);
  3219. extern void    ListResources(DBugDisp *dp);
  3220. extern void    ListIntrs(DBugDisp *dp);
  3221. extern void    ListPorts(DBugDisp *dp);
  3222. extern void    ListTasks(DBugDisp *dp);
  3223. extern void    ListLibs(DBugDisp *dp);
  3224. extern void    ListDevices(DBugDisp *dp);
  3225. extern void    ListMemList(DBugDisp *dp);
  3226. extern int     SizeDLIST(LIST *list);
  3227. extern BOOL    ListSymbols(DBugDisp *dp);
  3228. extern void        Newline(void);
  3229. extern void        PrintAddress(ULONG addr);
  3230. extern void        OffsetAddressBuf(ULONG addr, char *buf);
  3231. extern void        InitCommand(void);
  3232. extern void        InitModes(void);
  3233. extern void        RefreshCommand(int fullRefresh);
  3234. extern void        RefreshPrompt(BOOL fullRefresh);
  3235. extern void        RefreshWindow(int fullRefresh);
  3236. extern void        RefreshAllWindows(int fullRefresh);
  3237. extern void        SetDisplayMode(WORD, BOOL);
  3238. extern void        ReadPrefs(void);
  3239. extern void        WritePrefs(void);
  3240. extern void        abort(void);
  3241. extern BOOL        ParseArgToken(char *buf);
  3242. extern ULONG     OnOffToggle(char *arg, ULONG val, ULONG mask);
  3243. extern int        main(int ac, char *av[]);
  3244. extern LONG        CalcDisplayLines(void);
  3245. extern void        SetModeSave(WORD mode);
  3246. extern ULONG        ValidMemCheck(ULONG address);
  3247. extern __stkargs void kprintf(unsigned char *arg, ...);
  3248. extern UBYTE     LineBuf[128];
  3249. extern UBYTE     DirBuf[128];
  3250. extern WORD        ForceFullRefresh;
  3251. extern UBYTE     RexxReplyString[256];
  3252. extern UBYTE     DefaultPubName[128];
  3253. extern char        lastCommand[128];
  3254. extern int        RStepFlag;
  3255. extern char        rexxhostname[16];
  3256. extern long        ParseExp(char *, short *, long);
  3257. extern void        PushOp(short, short, short);
  3258. extern int        TopOfOpStack(void);
  3259. extern int        SecondOffOpStack(void);
  3260. extern void        PushAtom(long, short);
  3261. extern void        RefreshFKeys(BOOL fullRefresh);
  3262. extern BOOL        FunctionKey(UWORD num);
  3263. extern BOOL        HelpKey(void);
  3264. extern BOOL         CmdFKey(char *args);
  3265. extern BOOL        CmdRexx(char *args);
  3266. extern BOOL        CmdSavePrefs(char *args);
  3267. extern BOOL        CmdInfo(char *args);
  3268. extern BOOL        CmdExecBase(char *args);
  3269. extern BOOL        CmdResources(char *args);
  3270. extern BOOL        CmdIntrs(char *args);
  3271. extern BOOL        CmdPorts(char *args);
  3272. extern BOOL        CmdSymList(char *args);
  3273. extern BOOL        CmdTasks(char *args);
  3274. extern BOOL        CmdLibs(char *args);
  3275. extern BOOL        CmdDevices(char *args);
  3276. extern BOOL        CmdMemList(char *args);
  3277. extern BOOL        CmdDoBsBase(char *args);
  3278. extern BOOL        CmdProcess(char *args);
  3279. extern BOOL        CmdOffsets(char *args);
  3280. extern BOOL        CmdDown(char *args);
  3281. extern BOOL        CmdUp(char *args);
  3282. extern BOOL        CmdPageDown(char *args);
  3283. extern BOOL        CmdPageUp(char *args);
  3284. extern BOOL        CmdSource(char *args);
  3285. extern BOOL        CmdDism(char *args);
  3286. extern BOOL        CmdMixed(char *args);
  3287. extern BOOL        CmdBytes(char *args);
  3288. extern BOOL        CmdWords(char *args);
  3289. extern BOOL        CmdLongs(char *args);
  3290. extern BOOL        CmdBreakpoint(char *args);
  3291. extern BOOL        CmdBP(char *args);
  3292. extern BOOL        CmdClear(char *args);
  3293. extern BOOL        CmdHunks(char *args);
  3294. extern BOOL        CmdSymbol(char *args);
  3295. extern BOOL        CmdSet(char *args);
  3296. extern BOOL        RStepTarget(void);
  3297. extern BOOL        StepTarget(void);
  3298. extern BOOL        StepTargetRange(ULONG addressLow, ULONG addressHi);
  3299. extern BOOL        RStepTargetRange(ULONG addressLow, ULONG addressHi);
  3300. extern BOOL        CmdStep(char *args);
  3301. extern BOOL        CmdRStep(char *args);
  3302. extern BOOL        OverTarget(void);
  3303. extern BOOL        OverTargetRange(ULONG addressLow, ULONG addressHi);
  3304. extern BOOL        CmdOver(char *args);
  3305. extern BOOL        CmdReset(char *args);
  3306. extern BOOL        GoTarget(void);
  3307. extern BOOL        CmdGo(char *args);
  3308. extern BOOL        CmdEval(char *args);
  3309. extern BOOL        CmdOpen(char *args);
  3310. extern BOOL        CmdClose(char *args);
  3311. extern BOOL        CmdQuit(char *args);
  3312. extern BOOL        CmdHelp(char *args) ;
  3313. extern BOOL        CmdWatchBytes(char *args);
  3314. extern BOOL        CmdWatchWords(char *args);
  3315. extern BOOL        CmdWatchLongs(char *args);
  3316. extern BOOL        CmdWatchClear(char *args);
  3317. extern BOOL        CmdRefresh(char *args);
  3318. extern BOOL        CmdDosBase(char *args);
  3319. extern WORD        RefreshHelp(WORD maxLines, BOOL fullRefresh, LONG);
  3320. extern BOOL        DownHelp(void);
  3321. extern BOOL        UpHelp(void);
  3322. extern int        HelpSize(void);
  3323. extern char        *SkipBlanks(char *s);
  3324. extern BOOL        DoCommand(char *command);
  3325. extern BOOL        CmdAlias(char *args);
  3326. extern BOOL        CmdUnAlias(char *args);
  3327. extern BOOL        CmdRegs(char *args);
  3328. extern BOOL        CmdJump(char *args);
  3329. extern BOOL         CmdBar(char *args);
  3330. extern BOOL         CmdEnd(char *args);
  3331. extern BOOL         CmdItem(char *args);
  3332. extern BOOL         CmdTitle(char *args);
  3333. extern BOOL         CmdMenus(char *args);
  3334. extern BOOL         CmdSubItem(char *args);
  3335. extern BOOL         CmdChangeWindow(char *args);
  3336. extern BOOL         CmdAgain(char *args);
  3337. extern void         init_function_keys(void);
  3338. extern char    fkeys[10][16];
  3339. extern void kprintline(char *string);
  3340. extern void kprintlen(char *string, int len);
  3341. extern WORD        RefreshHunks(WORD maxLines, BOOL fullRefresh, LONG index);
  3342. extern WORD        RefreshSymbols(WORD maxLines, BOOL fullRefresh, LONG index);
  3343. extern LONG        SymbolIndexOfAddr(ULONG val);
  3344. extern BOOL        DownHunks(void);
  3345. extern BOOL        UpHunks(void);
  3346. extern BOOL        DownSymbol(void);
  3347. extern BOOL        PageDownSymbol(void);
  3348. extern BOOL        UpSymbol(void);
  3349. extern BOOL        PageUpSymbol(void);
  3350. extern BOOL        DBugLoadSeg(char *filename);
  3351. extern void        AllocateStack(void);
  3352. extern void        ResetTarget(void);
  3353. extern DEBUG     *FindDebug(ULONG address);
  3354. extern DEBUG     *FindNearestDebug(ULONG address);
  3355. extern SOURCE    *FindSource(DEBUG *debug, ULONG address);
  3356. extern char        *FindSourceLine(DEBUG *debug, SOURCE *source);
  3357. extern __stkargs char *LookupValue(ULONG value);
  3358. extern ULONG     *NearestSymbol(ULONG value);
  3359. extern char        *NearestValue(ULONG value);
  3360. extern BOOL        LookupSymbol(char *symbol, ULONG *value);
  3361. extern BOOL        LookupSymLen(char *symbol, UWORD len, ULONG *value);
  3362. extern int        CountSymbols(void);
  3363. extern void        CopySymbols(SYMLIST *symlist);
  3364. extern char        *addscore(char *string);
  3365. extern char        *addat(char *string);
  3366. extern WORD        RefreshBreakpoints(WORD maxLines, BOOL fullRefresh);
  3367. extern BOOL        UpBreak(void);
  3368. extern BOOL        DownBreak(void);
  3369. extern void        InitBreakpoints(void);
  3370. extern void        InstallBreakpoints(void);
  3371. extern void        CheckBreakpoints(void);
  3372. extern BOOL        IsBreakpoint(ULONG address);
  3373. extern BOOL        SetBreakpoint(ULONG address, UWORD count, UWORD type);
  3374. extern BOOL        ClearBreakpoint(ULONG address);
  3375. extern void        SetTempBreakpoint(ULONG address);
  3376. extern void        SetAllBreakpoints(void);
  3377. extern WORD topBP;
  3378. extern WORD        RefreshBytes(WORD maxLines, BOOL fullRefresh, ULONG addr);
  3379. extern WORD        RefreshWords(WORD maxLines, BOOL fullRefresh, ULONG addr);
  3380. extern WORD        RefreshLongs(WORD maxLines, BOOL fullRefresh, ULONG addr);
  3381. extern BOOL        UpBytes(void);
  3382. extern BOOL        UpWords(void);
  3383. extern BOOL        UpLongs(void);
  3384. extern BOOL        PageUpHex(void);
  3385. extern BOOL        DownBytes(void);
  3386. extern BOOL        DownWords(void);
  3387. extern BOOL        DownLongs(void);
  3388. extern BOOL        PageDownHex(void);
  3389. extern BOOL        DownMixed(void);
  3390. extern BOOL        UpMixed(void);
  3391. extern BOOL        PageDownMixed(void);
  3392. extern BOOL        PageUpMixed(void);
  3393. extern BOOL        DownSource(void);
  3394. extern BOOL        UpSource(void);
  3395. extern BOOL        PageDownSource(void);
  3396. extern BOOL        PageUpSource(void);
  3397. extern WORD        RefreshMixed(WORD maxLines, BOOL fullRefresh, ULONG, ULONG, WORD);
  3398. extern WORD        PrevMixedLine(ULONG *addr, ULONG *line, LONG *info);
  3399. extern WORD        NextMixedLine(ULONG *addr, ULONG *line, LONG *info);
  3400. extern WORD        CurrentMixedLine(ULONG *addr, ULONG *line, LONG *info);
  3401. extern BOOL        DownDism(void);
  3402. extern BOOL        UpDism(void);
  3403. extern BOOL        PageDownDism(void);
  3404. extern BOOL        PageUpDism(void);
  3405. extern WORD        RefreshDism(short maxLines, BOOL fullRefresh);
  3406. extern ULONG     PreviousInstruction(ULONG addr);
  3407. extern char        *StateText(ULONG staten);
  3408. extern WORD        RefreshRegisters(WORD maxLines, BOOL fullRefresh);
  3409. extern long        *RegisterAddress(char *name);
  3410. extern WORD        RefreshWatchpoints(WORD maxLines, BOOL fullRefresh);
  3411. extern void        InitWatchpoints(void);
  3412. extern BOOL        IsWatchpoint(char *expression);
  3413. extern BOOL        SetWatchpoint(char *expression, ULONG type);
  3414. extern BOOL        ClearWatchpoint(char *expression);
  3415. extern BOOL         ShowWatchTitle(BOOL fullRefresh, WORD *count, WORD *maxLines);
  3416. extern BOOL     enable_menus(void);
  3417. extern void     init_default_menus(void);
  3418. extern void     free_menus(void);
  3419. extern void     set_menu_item(int num, int type, unsigned char *str, unsigned char *cmd, unsigned char *comkey);
  3420. extern void     do_scroller(void);
  3421. extern UWORD FindScrollerTop(UWORD total, UWORD displayable, UWORD pot);
  3422. extern int     FindScrollerValues(UWORD total, UWORD displayable, UWORD top, WORD overlap, UWORD *body, UWORD *pot);
  3423. extern void     setscrollbar(int flag);
  3424. extern void     ActivateArrows(struct Window *win);
  3425. extern void     InActivateArrows(struct Window *win);
  3426. extern BOOL     ProcessMenuItem(char *args,int type);
  3427. extern int    FindSlot(char *args);
  3428. extern struct Menu *v_create_menus(struct NewMenu *menulist);
  3429. extern int v_layout_menus(struct Menu *menus);
  3430. extern void v_free_menus(struct Menu *menus);
  3431. extern int text_width(char *str);
  3432. extern BOOL        RXGetPC(char *args);
  3433. extern BOOL        RXGetLine(char *args);
  3434. extern BOOL        RXGetInfo(char *args);
  3435. extern BOOL        RXGetDismLine(char *args);
  3436. extern BOOL         RXGetEval(char *args);
  3437. extern BOOL         RXGetBytes(char *args);
  3438. extern BOOL        RXGetWords(char *args);
  3439. extern BOOL        RXGetLongs(char *args);
  3440. extern BOOL        RXGetCommand(char *args);
  3441. extern BOOL        RXStartList(char *args);
  3442. extern BOOL        RXEndList(char *args);
  3443. extern BOOL        RXPutList(char *args);
  3444. extern void        InitConsole(void);
  3445. extern LONG        ScrMainBodyRange(void *ptop, void *pbot);
  3446. extern LONG        ScrColumns(WORD overhead, WORD itemWidth, WORD limit);
  3447. extern void        ScrFlush(void);
  3448. extern void        ScrPutNewline(void);
  3449. extern void        ScrPutChar(UBYTE c);
  3450. extern void        ScrWrite(char *s, ULONG len);
  3451. extern void        ScrPuts(char *s);
  3452. extern void        ScrPutsCtl(char *s);
  3453. extern WORD        ScrPrintf(const char *fmt, ...);
  3454. extern void        ScrStatus(const char *fmt, ...);
  3455. extern void        ScrHome(void);
  3456. extern void        ScrCursoff(void);
  3457. extern void        ScrCurson(void);
  3458. extern void        ScrClr(void);
  3459. extern void        ScrRowCol(UWORD row, UWORD col);
  3460. extern void        ScrEOL(void);
  3461. extern void        ScrHighlight(void);
  3462. extern void        ScrDull(void);
  3463. extern void        ScrPlain(void);
  3464. extern void        ScrInverse(void);
  3465. extern void        ScrItalics(void);
  3466. extern void        ScrUnderline(void);
  3467. extern void        ScrScrollup(void);
  3468. extern void        ScrScrolldown(void);
  3469. extern DBugDisp     *ScrOpen(BOOL first, BOOL refresh, char *pubname);
  3470. extern void        ScrScrollClr(void);
  3471. extern void        GetWindowSize(void);
  3472. extern void        EnterDebugger(void);
  3473. extern void        CloseDisplay(struct DBugDisp *);
  3474. extern void        RequestCloseDisplay(struct DBugDisp *, int );
  3475. extern BOOL        CheckCloseDisplay(void);
  3476. extern void        ProcessDataAtCoord(DBugDisp *disp, WORD x, WORD y);
  3477. extern void         SetTitle(char *title, DBugDisp *disp);
  3478. extern void         draw_fkey_boxes(void);
  3479. extern void        drawdoublebox(void);
  3480. extern struct DBugDisp  *CurDisplay;
  3481. extern LIST    DisplayList;
  3482. extern  const unsigned char __CArya[257];
  3483. extern  const unsigned char __CAryb[257];
  3484. extern  const unsigned char __CUToL[257];
  3485. extern  const unsigned char __CLToU[257];
  3486. extern int isalnum(int);
  3487. extern int isalpha(int);
  3488. extern int iscntrl(int);
  3489. extern int isdigit(int);
  3490. extern int isgraph(int);
  3491. extern int islower(int);
  3492. extern int isspace(int);
  3493. extern int isupper(int);
  3494. extern int ispunct(int);
  3495. extern int isxdigit(int);
  3496. extern int isprint(int);
  3497. extern int tolower(int);
  3498. extern int toupper(int);
  3499. extern void        InitConsole(void);
  3500. extern LONG        ScrMainBodyRange(void *ptop, void *pbot);
  3501. extern LONG        ScrColumns(WORD overhead, WORD itemWidth, WORD limit);
  3502. extern void        ScrFlush(void);
  3503. extern void        ScrPutNewline(void);
  3504. extern void        ScrPutChar(UBYTE c);
  3505. extern void        ScrWrite(char *s, ULONG len);
  3506. extern void        ScrPuts(char *s);
  3507. extern void        ScrPutsCtl(char *s);
  3508. static unsigned int    _swrite(char *buf, size_t n1, size_t n2, const char **sst);
  3509. extern WORD        ScrPrintf(const char *fmt, ...);
  3510. extern void        ScrStatus(const char *fmt, ...);
  3511. static void        QueueRead(void);
  3512. static void        HandleConsoleInput(struct DBugDisp *disp, WORD c);
  3513. extern void        ScrHome(void);
  3514. extern void        ScrCursoff(void);
  3515. extern void        ScrCurson(void);
  3516. extern void        ScrClr(void);
  3517. extern void        ScrRowCol(UWORD row, UWORD col);
  3518. extern void        ScrEOL(void);
  3519. extern void        ScrHighlight(void);
  3520. extern void        ScrDull(void);
  3521. extern void        ScrPlain(void);
  3522. extern void        ScrInverse(void);
  3523. extern void        ScrItalics(void);
  3524. extern void        ScrUnderline(void);
  3525. extern void        ScrScrollup(void);
  3526. extern void        ScrScrolldown(void);
  3527. __autoexit static void    ScrClose(void);
  3528. extern DBugDisp     *ScrOpen(BOOL first, BOOL refresh, char *pubname);
  3529. extern void        ScrScrollClr(void);
  3530. extern void        GetWindowSize(void);
  3531. extern void        EnterDebugger(void);
  3532. extern void        CloseDisplay(struct DBugDisp *);
  3533. extern void        RequestCloseDisplay(struct DBugDisp *, int );
  3534. extern BOOL        CheckCloseDisplay(void);
  3535. extern void        ProcessDataAtCoord(DBugDisp *disp, WORD x, WORD y);
  3536. extern void         SetTitle(char *title, DBugDisp *disp);
  3537. extern void         draw_fkey_boxes(void);
  3538. extern void        drawdoublebox(void);
  3539. static       void         drawbox(int xcol,int yrow, int xlen, int ylen);
  3540. static     void        do_putc(DBugDisp *disp, UBYTE c);
  3541. extern struct DBugDisp  *CurDisplay;
  3542. extern LIST    DisplayList;
  3543. extern struct Menu      *DebugMenu;
  3544. extern struct Gadget ColorGadget;
  3545. extern struct Gadget DownGadget;
  3546. extern struct Gadget UpGadget;
  3547. extern struct Image ColorPropImage;
  3548. extern struct PropInfo ColorPropInfo;
  3549. DBugDisp    *CurDisplay;
  3550. LIST        DisplayList;
  3551. MPORT        DBugPort;
  3552. WORD        CheckClose;
  3553. char        ValidClipChar[256];
  3554. static int  count = 0;
  3555. static int  PageFlag = 0;
  3556. static int  Ticked = 0;
  3557. USHORT    oldrow = 0xFFFF;
  3558. USHORT  oldcol = 0xFFFF;
  3559. static ULONG seconds=0;
  3560. static ULONG micros=0;
  3561. __geta4 void    EnterDebugger(void) {
  3562.     struct    MenuItem *item;
  3563.     if (CurDisplay && CurDisplay->ds_DisplayMode > DISPLAY_MIXED)
  3564.     SetDisplayMode(CurDisplay->ds_PreferedMode, 0);
  3565.     RefreshWindow(-1);
  3566.     ScrStatus("Ready");
  3567.     RefreshCommand(1);
  3568.     ScrCurson();
  3569.     SetSignal(0L,(1L<<4));
  3570.     while (DisplayList.lh_Head != (NODE *)&DisplayList.lh_Tail) {
  3571.     ULONG    mask;
  3572.     MSG    *msg;
  3573.     if (CheckClose && CheckCloseDisplay()) {
  3574.         break;
  3575.     }
  3576.     mask = Wait( (1<<DBugPort.mp_SigBit) | (1<<RexxSigBit) );
  3577.     if (mask & (1<<DBugPort.mp_SigBit)) {
  3578.          while (msg = GetMsg(&DBugPort)) {
  3579.         DBugDisp    *disp;
  3580.         for (disp = (DBugDisp *)DisplayList.lh_Head; disp->ds_Node.ln_Succ; disp = (DBugDisp *)disp->ds_Node.ln_Succ) {
  3581.             if (msg == (MSG *)&disp->ds_CReadReq) {
  3582.             disp->ds_CReadIP = 0;
  3583.             CurDisplay = disp;
  3584.             HandleConsoleInput(disp, disp->ds_CInChar);
  3585.             CurDisplay = disp;
  3586.             QueueRead();
  3587.             msg = 0L;
  3588.             break;
  3589.             }
  3590.         }
  3591.         if (msg == 0L)continue;
  3592.         CurDisplay = 0L;
  3593.         for (disp = (DBugDisp *)DisplayList.lh_Head; disp->ds_Node.ln_Succ; disp = (DBugDisp *)disp->ds_Node.ln_Succ) {
  3594.             if (((IMSG *)msg)->IDCMPWindow == disp->ds_Win) {
  3595.             CurDisplay = disp;
  3596.             break;
  3597.             }
  3598.         }
  3599.         if (CurDisplay) {
  3600.             switch (((IMSG*)msg)->Class) {
  3601.             case 0x00000200:
  3602.             RequestCloseDisplay(CurDisplay,0);
  3603.             break;
  3604.                 case 0x00000002:
  3605.                 GetWindowSize();
  3606.                 {
  3607.                     WINDOW    *window = CurDisplay->ds_Win;
  3608.                     dprefs.left = window->LeftEdge; dprefs.top = window->TopEdge;
  3609.                     dprefs.width = window->Width; dprefs.height = window->Height;
  3610.                 }
  3611.                 ScrClr();
  3612.                 setscrollbar(1);
  3613.                 RefreshWindow(-1);
  3614.                 ScrStatus("Window Resized");
  3615.                 RefreshCommand(1);
  3616.                 ScrFlush();
  3617.                 break;
  3618.             case 0x00000008:
  3619.                 switch(((IMSG *)msg)->Code) {
  3620.                 USHORT newrow, newcol, nc, nr;
  3621.                 case (0x68 | 0x80):
  3622.                 break;
  3623.                 case (0x68):
  3624.                     newcol = (((IMSG *)msg)->MouseX);
  3625.                     nc = newcol >> 3;
  3626.                     newrow = (((IMSG *)msg)->MouseY);
  3627.                     nr = newrow >> 3;
  3628.                     if((oldcol == nc) && (oldrow == nr)) {
  3629.                     char *string="bp\r";
  3630.                         while (*string) {
  3631.                             HandleConsoleInput(disp,*string++);
  3632.                     }
  3633.                     oldcol = oldrow = 0xFFFF;
  3634.                     }
  3635.                     else {
  3636.                         oldcol = nc;
  3637.                         oldrow =  nr;
  3638.                         ProcessDataAtCoord(disp, newcol, newrow);
  3639.                     }
  3640.                 break;
  3641.                 }
  3642.                 break;
  3643.             case 0x00000004:
  3644.                 BeginRefresh(disp->ds_Win);
  3645.                 EndRefresh(disp->ds_Win, 1);
  3646.                 break;
  3647.             case 0x00080000:
  3648.                 InActivateArrows(disp->ds_Win);
  3649.                 break;
  3650.             case 0x00040000: {
  3651.                 PageFlag = 0;
  3652.                 ActivateArrows(disp->ds_Win);
  3653.                 RefreshCommand(1);
  3654.                 break;
  3655.             }
  3656.             case 0x00400000:
  3657.                 if(PageFlag) {
  3658.                 Ticked = 1;
  3659.                 ScrCursoff();
  3660.                 if( PageFlag == 1)DoCommand("UP");
  3661.                 else DoCommand("DOWN");
  3662.                 RefreshPrompt(1);
  3663.                 RefreshCommand(1);
  3664.                 ScrCurson();
  3665.                 }
  3666.                 break;
  3667.             case 0x00000040: {
  3668.                 unsigned int id;
  3669.                 APTR address = ((IMSG *)msg)->IAddress;
  3670.                 if( (id = ((struct Gadget *)address)->GadgetID) != 0) {
  3671.                     PageFlag = 0;
  3672.                     if(Ticked) {
  3673.                     Ticked = 0;
  3674.                     break;
  3675.                     }
  3676.                     ScrCursoff();
  3677.                     if( id == 1)DoCommand("UP");
  3678.                     else DoCommand("DOWN");
  3679.                     RefreshPrompt(1);
  3680.                     RefreshCommand(1);
  3681.                     ScrCurson();
  3682.                 }
  3683.                 break;
  3684.             }
  3685.             case 0x00000010:
  3686.                 if(++count&1) {
  3687.                 break;
  3688.                 }
  3689.             case 0x00000020: {
  3690.                 ULONG current, last;
  3691.                 unsigned int id;
  3692.                 APTR address = ((IMSG *)msg)->IAddress;
  3693.                 if( (id = ((struct Gadget *)address)->GadgetID) != 0) {
  3694.                 PageFlag = (id == 1) ? 1 : 2;
  3695.                 Ticked = 0;
  3696.                 break;
  3697.                 }
  3698.                 switch (CurDisplay->ds_DisplayMode) {
  3699.                 case DISPLAY_DISM:
  3700.                 case DISPLAY_SOURCE:
  3701.                 case DISPLAY_MIXED:
  3702.                 case DISPLAY_BYTES:
  3703.                 case DISPLAY_WORDS:
  3704.                 case DISPLAY_LONGS:
  3705.                     last = (ScrollEnd - ScrollStart) >> 5;
  3706.                     break;
  3707.                 case DISPLAY_HELP:
  3708.                     last = HelpSize();
  3709.                     break;
  3710.                 case DISPLAY_SYMBOL:
  3711.                     last = SymbolCount;
  3712.                     break;
  3713.                 case DISPLAY_HUNKS:
  3714.                         last = numHunks;
  3715.                         break;
  3716.                 case DISPLAY_BREAK:
  3717.                     last = 32+5;
  3718.                     break;
  3719.                     default:
  3720.                         last = SizeDLIST(&CurDisplay->ds_List);
  3721.                 }
  3722.                 current = FindScrollerTop(last, CurDisplay->ds_ScrRows, ColorPropInfo.VertPot);
  3723.                 switch(CurDisplay->ds_DisplayMode) {
  3724.                 case DISPLAY_DISM:
  3725.                 case DISPLAY_SOURCE:
  3726.                 case DISPLAY_MIXED:
  3727.                 case DISPLAY_BYTES:
  3728.                 case DISPLAY_WORDS:
  3729.                 case DISPLAY_LONGS:
  3730.                     if((ScrollStart + (current << 5)) != CurDisplay->ds_WindowTop) {
  3731.                     CurDisplay->ds_WindowTop = ScrollStart + (current << 5);
  3732.                     CurDisplay->ds_WindowTopLine = 0;
  3733.                     RefreshWindow(1);
  3734.                     }
  3735.                     break;
  3736.                 case DISPLAY_BREAK:
  3737.                     if(topBP != current) {
  3738.                     topBP = current;
  3739.                     RefreshWindow(1);
  3740.                     }
  3741.                     break;
  3742.                 default:;
  3743.                     if(CurDisplay->ds_WindowTop != current) {
  3744.                     CurDisplay->ds_WindowTop = current;
  3745.                     CurDisplay->ds_WindowTopLine = 0;
  3746.                     RefreshWindow(1);
  3747.                     }
  3748.                 }
  3749.                 break;
  3750.             }
  3751.             case 0x00000100: {
  3752.                 USHORT code = ((IMSG *)msg)->Code;
  3753.                 char *string;
  3754.                 if (!code || (code == 0xFFFF))break;
  3755.                 while (code && (code != 0xFFFF)) {
  3756.                     item = ItemAddress(DebugMenu,(LONG) code);
  3757.                     string = (* ( (APTR *)(item+1) ) );
  3758.                     while (*string) {
  3759.                         HandleConsoleInput(disp,*string++);
  3760.                     }
  3761.                     HandleConsoleInput(disp,'\r');
  3762.                     code = item->NextSelect;
  3763.                 }
  3764.                 break;
  3765.             }
  3766.             default:
  3767.             break;
  3768.             }
  3769.         }
  3770.         if(msg)ReplyMsg(msg);
  3771.         }
  3772.     }
  3773.     if (mask & (1<<RexxSigBit)) {
  3774.         ProcessRexxCommands(0L);
  3775.     }
  3776.     }
  3777. }
  3778.